热线电话:13121318867

登录
2019-02-21 阅读量: 2427
如何使用re.findall()从文本文件中提取所有数字

这个问题的基本概要是读取文件,使用查找整数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, ...)。

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子