Возьмите сумму всех строк, содержащих число и пропустив те, что с алфавитами, и запишите сумму в другой файл - PullRequest
0 голосов
/ 06 ноября 2018

Я написал следующий код, который читает файл, содержащий строки с числами и алфавитами. Я хочу вычислить сумму всех чисел в одной строке, пропустить строки с алфавитами и, наконец, записать эту сумму в другой файл.

Файл для чтения содержит следующие данные:

a b c d e

1 2 3 4 5

f g h i j

6 7 8 9 10

k l m n o

11 12 13 14 15

Мой код на python выглядит следующим образом

 f=open("C:/Users/Mudassir Awan/Desktop/test.txt",'r+')
    s=0
    l=0
    for line in f:

       for i in line.split():
           if i.isnumeric():
               s=s+i
       print(s)
       if s!=0:
          m=open("C:/Users/Mudassir Awan/Desktop/jk.txt",'a')
          m.write(str(s))
          m.write("\n")

          m.close()
     s=0

Я получаю сообщение об ошибке «TypeError: неподдерживаемые типы операндов для +: 'int' и 'str'"

enter image description here

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Вы добавляете строку к целому числу. Попробуйте следующее при добавлении чисел:

s = s + int(i)
0 голосов
/ 06 ноября 2018

isnumeric () только проверяет, являются ли все символы в строке числовыми или нет. Это не меняет их тип данных.

Вам необходимо преобразовать тип данных i, который является str после line.split ()

for i in line.split():
           if i.isnumeric():
               s=s+int(i)

В Python десятичные символы, цифры (нижний индекс, верхний индекс) и символы, имеющие свойство числового значения Unicode (дробь, римские цифры), все считаются числовыми символами.

0 голосов
/ 06 ноября 2018

Строки, которые вы определяете как числа с помощью метода str.isnumeric, по-прежнему являются строками. Вы должны преобразовать эти строки в целые числа перед выполнением числовых операций с ними.

Изменение:

s=s+i

до:

s=s+int(i)
...