查找输入文件中数字的总和[重复]
Posted
技术标签:
【中文标题】查找输入文件中数字的总和[重复]【英文标题】:Find the sum of the numbers in an input file [duplicate] 【发布时间】:2016-06-06 23:07:01 【问题描述】:我正在尝试查找输入文件中所有数字的总和,但它不起作用。到目前为止,这是我的代码:
import re
fname = raw_input("Enter name of the file: ")
fh = open(fname)
for i in fh:
y = re.findall('[0-9]+', i)
print y
n=0
for p in y:
n = n + int(p)
print n
【问题讨论】:
你想要所有数字的总和还是每行的总和? 所有数字。但是我的程序在第一个 for 循环中出错了,它将数字存储在 y 列表中 检查我的答案,你应该会发现你不需要那个循环。只需使用re.findall('[0-9]+',fh)
。
您的文件是什么样的?每行一个号码,没有其他号码?带文字的数字?
请注意,最好在使用文件后关闭文件(循环后fh.close()
),或者更好的是使用with
语句,以便自动处理文件关闭。
【参考方案1】:
您的代码将有效,除非您错过了两件事。 1) 当您打开文件时,您必须指定要以读取模式打开它。 2) 您必须阅读该文件。这是正确的代码:
import re
fname=raw_input("Enter name of the file: ")
fh=open(fname, "r")
data = fh.read()
y = re.findall('[0-9]+',data)
n=0
for p in y:
n = n + int(p)
print n
【讨论】:
【参考方案2】:应该这样做:
import re
fname=raw_input("Enter name of the file: ")
with open(fname, 'r') as f: lines = f.readlines()
print map(lambda line: sum([int(i) for i in re.findall('[0-9]+', line)]), lines)
【讨论】:
以上是关于查找输入文件中数字的总和[重复]的主要内容,如果未能解决你的问题,请参考以下文章
查找并打印总和为 100 的每个唯一组合,并返回 1 到 100 之间数字的所有此类组合的计数 [重复]