如何将由非数字分隔的文件中的所有数字相加

时间:2014-02-19 23:59:54

标签: python

例如,3.145将是3和145的总和.21,756.54会添加三个数字:21,756和54.假设这个文件有单词和数字,我怎么才能得到数字,然后拆分它们在逗号和句点,然后将它们一起添加。

这是我到目前为止所拥有的

fileName =(输入(“输入要计数的文件的名称:”))

infile = open(fileName,"r")
for line in infile:
    for ch in line:
        if ch >= "0":
            if ch <= "9":
                print(ch, end = "")

所有这一切都是在一个长字符串中给我文件中的所有数字。我需要用逗号和小数分割它们然后将它们加在一起。任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:4)

我使用正则表达式和贪婪的+来提取所有数字:

import re
with open(fileName,"r") as f:
   nums = re.findall("[0-9]+", f.read())
   sum(map(int,nums))

答案 1 :(得分:1)

replace所有, .split .map每个元素int和{ {3}}这些元素:

>>> line = '21,756.54'
>>> sum(map(int, line.replace(',','.').split('.')))
831

答案 2 :(得分:1)

您将要在此处使用正则表达式。在正则表达式中,\d表示所有数字。因此,以下内容会将所有数字拆分为一个列表,然后您就可以sum

import re
with open(fileName,"r") as f:
    list_of_numbers = re.split(r'[^\d]',f.read())
    answer = sum(map(int,list_of_numbers))
#answer is now the sum of those integers

表达式[^\d]可以解释如下:

[^...]表示除了所提供的字符外的所有内容,因此[^\d]表示每个非数字字符