【问题标题】: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 语句,以便自动处理文件关闭。

标签: python regex


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2023-02-04
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      相关资源
      最近更新 更多