我正在尝试通过阅读文件来添加数字。
该文件包含文本和数字,因此我只需要数字并添加它们以显示总数。
始终将值显示为零。不知道我哪里做错了。
以下是代码:
import re
file1 = open('Actual.txt')
line = file.read().rstrip()
numlist = list()
for line in file1:
list = re.findall(r'[0-9.]+',line)
if len(list)>0:
num = int(list)
numlist.append(num)
total = 0
for sum in numlist:
total += sum
print (total)
答案 0 :(得分:1)
这可能会对您有所帮助:
import re
file1 = open('so.txt')
numlist = list()
for line in file1:
line_list = re.findall(r'[0-9.]+',line)
if len(line_list) > 0:
numlist.extend(line_list)
print numlist
total = 0
for sum in numlist:
total += int(sum)
print (total)
答案 1 :(得分:0)
有几个错误 - 我使用ast.literal_eval
将strings
转换为int
(int
函数,即int(list)
)尝试类似 -
import re,ast
file1 = open(r"C:\Actual.txt")
numlist = list()
for line in file1:
lst = re.findall(r'[0-9.]+',line)
if len(lst)>0:
num = [ast.literal_eval(i.strip()) for i in lst]# or use [int(i.strip()) for i in lst]
numlist=numlist+num
total = 0
for sum in numlist:
total += sum
print (total)
答案 2 :(得分:0)
在处理事物清单时,您可以一次性完成所有工作。 re.findall
会在文件中找到所有内容,sum
会在转换为int
后将其全部加起来。因此,使用一些调试代码生成测试文件,您可以:
import re
# todo: debug - generate a test file
open('Actual.txt', 'w').write("""ddenww123 4enale 56asdfr
7 lakjer 8910 222
""")
with open('Actual.txt') as fp:
total = sum(int(val) for val in re.findall(r'\d+', fp.read()))
print(total)