2016-03-01 4 views
-2

Это то, что я должен сделать:Найти сумму чисел в строке

  1. Чтение содержимого текстового файла, в котором два числа, разделенные запятой, в каждой строке (как 10, 5\n, 12, 8\n, ...)

  2. Сделать сумму этих двух чисел

  3. записи в новый текстовый файл двух исходных чисел и результат суммирования = 10 + 5 = 15\n как, 12 + 8 = 20\n ...

До сих пор, у меня есть это:

import os 
import sys 

relative_path = "Homework 2.txt" 
if not os.path.exists(relative_path): 
    print "not found" 
    sys.exit() 

read_file = open(relative_path, "r") 
lines = read_file.readlines() 
read_file.close() 
print lines 

path_output = "data_result4.txt" 
write_file = open(path_output, "w") 

for line in lines: 
    line_array = line.split() 
    print line_array 

ответ

0

Сделайте свой последний for цикл выглядеть следующим образом:

for line in lines: 
    splitline = line.strip().split(",") 
    summation = sum(map(int, splitline)) 
    write_file.write(" + ".join(splitline) + " = " + str(summation) + "\n") 

Одна красивая вещь, о том, как в том, что вы можете иметь много цифр, как вы хотите на линии, и оно будет отображаться правильно.

+0

Я получил ошибка: ValueError: invalit literal для int() с базой 10: «3,6». Я использую TXT FILE –

+0

Извините, что так долго. Это потому, что я думал, что у вас будет «3, 6», а не «3,6». Вам просто нужно удалить пробел в вызове '.split()'. Я отредактировал свой ответ. – zondo

0

Чтобы понять это, нужно иметь хорошее понимание python.

Во-первых, прочитать файл и получить все строки, разделив ее с переводом строки (\n)

Для каждого выражения, вычислить ответ и записать его. Помните, что вам нужно указать числа в целые числа, чтобы их можно было добавить вместе.

with open('Original.txt') as f: 
    lines = f.read().split('\n') 

with open('answers.txt', 'w+') as f: 
    for expression in lines: # expression should be in format '12, 8' 
     nums = [int(i) for i in expression.split(', ')] 

     f.write('{} + {} = {}\n'.format(nums[0], nums[1], nums[0] + nums[1])) 
     # That should write '12 + 8 = 20\n' 
-1

Похоже, что входной файл является csv, поэтому просто используйте модуль чтения csv в python.

входного файла Домашнее задание 2.txt

1, 2 
1,3 
1,5 
10,6 

Сценарий

import csv 

f = open('Homework 2.txt', 'rb') 
reader = csv.reader(f) 

result = [] 
for line in list(reader): 
    nums = [int(i) for i in line] 
    result.append(["%(a)s + %(b)s = %(c)s" % {'a' : nums[0], 'b' : nums[1], 'c' : nums[0] + nums[1] }]) 

f = open('Homework 2 Output.txt', 'wb') 
writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 
for line in result: 
    writer.writerow(line) 

Выходной файл затем Домашнее задание 2 Output.txt

1 + 2 = 3 
1 + 3 = 4 
1 + 5 = 6 
10 + 6 = 16 
+0

* Кажется, что входной файл csv *. Уммм ... Не совсем. Формат, в котором записаны данные, может напоминать формат csv, но это не файл csv - вы просто путаете OP, говоря это. Это просто обычный текстовый файл, и в этом случае вы добавляете дополнительные, ненужные сложности в код. – Zizouz212

+0

Это неправильно, он сказал, что входной файл похож на: 10, 5 \ n, 12, 8 \ n, и это всего лишь формат ввода csv. – Kordi

+0

Но он несет расширение '.txt', а не' .csv'. Вы добавляете сложности и доказываете мою прежнюю точку зрения. – Zizouz212

Смежные вопросы