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

Posted

技术标签:

【中文标题】取所有包含数字的行的总和并跳过带有字母的行并将总和写回另一个文件【英文标题】:Taking sum of all lines containing number and skipping those with alphabets and write back the sum to another file 【发布时间】:2018-11-06 17:58:37 【问题描述】:

我编写了以下代码,它读取包含数字和字母行的文件p>

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

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: unsupported operand type(s) for +: 'int' and 'str'”

【问题讨论】:

【参考方案1】:

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

s = s + int(i)

【讨论】:

【参考方案2】:

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

需要在line.split()之后转换i的数据类型为str

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

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

【讨论】:

【参考方案3】:

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

变化:

s=s+i

到:

s=s+int(i)

【讨论】:

以上是关于取所有包含数字的行的总和并跳过带有字母的行并将总和写回另一个文件的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法绘制所有具有相同名称的行的总和

获取每秒所有已开始但尚未完成的行的运行计数和值的总和

MySQL中具有相似ID的行的列乘法总和

如何在 MYSQL 中选择包含所有字母和数字的行?

从表中选择不同的记录并执行重复行的列总和(托盘、总和)。并显示重复的行一次[关闭]

如何通过C中的行总和对矩阵进行排序