对包含数字的所有行求和并跳过带有字母的行并将总和写回另一个文件

Taking sum of all lines containing number and skipping those with alphabets and write back the sum to another file

我写了下面的代码,它读取一个包含数字和字母行的文件我想计算一行中所有数字的总和并跳过字母行,最后将该总和写回另一个文件。

要读取的文件包含如下数据:

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'”

你用str.isnumeric方法识别为数字的字符串仍然是字符串。在对它们执行数字运算之前,您应该将这些字符串转换为整数。

变化:

s=s+i

至:

s=s+int(i)

您正在将一个字符串与一个整数相加。添加数字时尝试以下操作:

s = s + int(i)

isnumeric() 只检查字符串中的所有字符是否都是数字字符。它不会改变它们的数据类型。

line.split()

后需要转换i的数据类型为str
for i in line.split():
           if i.isnumeric():
               s=s+int(i)

在Python中,十进制字符、数字(下标、上标)和具有Unicode数值属性(分数、罗马数字)的字符都被视为数字字符。