我只是在学习python,需要一些帮助来完成我的课堂作业。
我有一个文件,里面有文字和数字。有些行有一个到三个数字,而另一些则根本没有数字。
我需要:
我用regex提取出所有的数字。我试图得到所有数字的总和,但我只是得到每一行有数字的总和。我一直在努力用不同的方法来完成这个任务,这是我最接近完成任务的方法。
我知道我错过了一些关键的部分,但我不知道我做错了什么。
这是我的代码:
import re
text = open('text_numbers.txt')
for line in text:
line = line.strip()
y = re.findall('([0-9]+)',line)
if len(y) > 0:
print sum(map(int, y))我得到的结果是这样的(每个都是一行的和):
14151 八一七 16997 18305 三八六六
它需要像这样的总和(所有数字的总和):
134058
发布于 2015-12-09 06:29:29
import re
import np
text = open('text_numbers.txt')
final = []
for line in text:
line = line.strip()
y = re.findall('([0-9]+)',line)
if len(y) > 0:
lineVal = sum(map(int, y))
final.append(lineVal)
print "line sum = {0}".format(lineVal)
print "Final sum = {0}".format(np.sum(final))这就是你要找的吗?
发布于 2016-01-11 20:34:18
我不太懂蟒蛇,但我可以给出一个简单的解决方案。尝尝这个
import re
hand = open('text_numbers.txt')
x=list()
for line in hand:
y=re.findall('[0-9]+',line)
x=x+y
sum=0
for i in x:
sum=sum + int(i)
print sum发布于 2016-06-28 02:33:07
我第一次尝试用正则表达式来回答这个问题,我发现这是一个很好的练习技巧,那就是阅读别人的代码。
import re # import regular expressions
chuck_text = open("regex_sum_286723.txt")
numbers = []
Total = 0
for line in chuck_text:
nmbrs = re.findall('[0-9]+', line)
numbers = numbers + nmbrs
for n in numbers:
Total = Total + float(n)
print "Total = ", Total 并感谢啤酒的“理解清单”一句,虽然他的“r”似乎不需要,但不知道它能做什么。但是它读起来很漂亮,我更困惑地读了两个像我的答案一样的循环。
import re
print sum([int(i) for i in re.findall('[0-9]+',open("regex_sum_286723.txt").read())])https://stackoverflow.com/questions/34172038
复制相似问题