这个问题的基本概要是读取文件,使用查找整数re.findall(),查找正则表达式,[0-9]+然后将提取的字符串转换为整数并总结整数。我有不同的结果它应该以(209)结束。另外,我如何简化我的代码?
import re
hand = open("regex_sum_167791.txt")
total = 0
count = 0
for line in hand:
count = count+1
line = line.rstrip()
x = re.findall("[0-9]+", line)
if len(x)!= 1 : continue
num = int(x[0])
total = num + total
print(total)
解决办法:假设您需要将txt中的所有数字相加:
total = 0
with open("regex_sum_167791.txt") as f:
for line in f:
total += sum(map(int, re.findall("\d+", line)))
print(total)
# 417209
逻辑
首先,请尝试使用with,当你做open这样一旦任何工作已经完成,open已关闭。
以下行被删除,因为它们似乎是多余的:
count = count+1: 不曾用过。
line = line.rstrip():re.findall负责提取,因此您不必担心剥线。
if len(x)!= 1 : continue:好像你想跳过没有数字的行。但由于sum(map(int, re.findall("\d+", line)))在这种情况下返回零,这也是不必要的。
num = int(x[0]):最后,这有效地抓住了该行的一位数。如果在一行中找到两个或更多个数字,则这不符合原始目的。而且由于int不能直接应用于迭代,我用过map(int, ...)。








暂无数据