[英]how to create a list and sum up
我是python的新手,并且停留在下面:下面是我正在使用的代码
import re
handle = open ('RegExWeek2.txt')
for line in handle:
line = line.rstrip()
x = re.findall('[0-9]+', line)
if len(x) > 0:
print x
此代码的返回如下所示:
['7430']
['9401', '9431']
['2248', '2047']
['5517']
['3184', '1241']
['9939']
['2185', '9450', '8428']
['369']
['3683', '6442', '7654']
问题:如何将其合并到一个列表中并汇总数字? 请帮忙
您可以这样更改代码,
handle = open ('RegExWeek2.txt')
num = []
for line in handle:
num.extend(re.findall('[0-9]+', line))
print sum(int(i) for i in num)
由于您使用的是re.findall
,因此line.rstrip()
行。 而且x不可能为空列表,因为我们在[0-9]
旁边使用+
( 将前一个标记重复一次或多次 )而不是*
( 零次或多次 )
有没有必要rstrip
,你应该使用打开的文件with
:
import re
all_numbers = []
with open('RegExWeek2.txt') as file:
for line in file:
numbers = re.findall('[0-9]+', line)
for number in numbers:
all_numbers.append(int(number))
print(sum(all_numbers))
这是真正的初学者代码,是您的直接翻译。 这是我的写法:
with open('RegExWeek2.txt') as file:
all_numbers = [int(num) for num in re.findall('[0-9]+', file.read())]
print(sum(all_numbers))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.