Python 如何创建列表和总结
我对python还比较陌生,并被困在以下方面: 下面是我正在使用的代码Python 如何创建列表和总结,python,Python,我对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', '
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]
旁边使用+
(重复前面的标记一次或多次)而不是*
(零次或多次)您可以这样更改代码
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
,您应该使用和打开文件:
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))
无需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))
非常感谢你的帮助接受一个有帮助的答案。非常感谢你的帮助接受一个有帮助的答案。