取所有包含数字的行的总和并跳过带有字母的行并将总和写回另一个文件
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)
【讨论】:
以上是关于取所有包含数字的行的总和并跳过带有字母的行并将总和写回另一个文件的主要内容,如果未能解决你的问题,请参考以下文章