【发布时间】:2017-08-06 18:06:52
【问题描述】:
我正在 Coursera 上一门涉及使用正则表达式的 Python 课程。目的是通过文本和数字文件读取,提取所有数字,并将它们相加。对于示例数据(http://py4e-data.dr-chuck.net/regex_sum_42.txt),我有以下代码:
import re
handle = open("regex_sum_42.txt")
numlist=list()
for line in handle :
line = line.rstrip()
stuff = re.findall('([0-9.]+)',line)
for element in stuff :
try :
num = int(element)
numlist.append(num)
except :
continue
print(sum(numlist))
由于“stuff”列表还包括空格(没有数字的行)和“.”,我认为我需要 try/except 行来防止回溯错误。有没有更简单的方法来实现这个程序,而不需要第二个 for 循环?
【问题讨论】:
-
如果要解析整数,为什么要加
.? -
您是否也在尝试对浮点数求和?
-
您的正则表达式不正确。您的模式将匹配一个或多个数字零到九个或一个或多个十进制字符。你可能想要的是更像这样的东西:
\d+(.\d+)?。
标签: python