例如,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 = "")
所有这一切都是在一个长字符串中给我文件中的所有数字。我需要用逗号和小数分割它们然后将它们加在一起。任何帮助都会非常感激。
答案 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]
表示每个非数字字符