从文件中添加数字 - Python

时间:2015-12-14 06:08:02

标签: python regex

我正在尝试通过阅读文件来添加数字。

该文件包含文本和数字,因此我只需要数字并添加它们以显示总数。

始终将值显示为零。不知道我哪里做错了。

以下是代码:

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)

3 个答案:

答案 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_evalstrings转换为intint函数,即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)