我是Python新手,我确信有一种方法可以做到这一点,我不知道。我查看了我的问题,有很多类似的问题,但我找不到我的问题。
我的字符串是:
"Arkansas 40\n Washington 83\n North Dakota 49\n New Jersey 24"
我想要做的只是将字符串中的数字加在一起。
我已经编写了一个使用“try”语句执行此操作的函数,但是“try”需要将某些内容写入缩进的“except”部分,我只是希望它只是默默地丢弃任何异常
我正在寻找的输出是:
196
(编辑)哇 - 很明显,有很多方法可以做到这一点。我为我想要完成的非常简单的任务选择了最佳答案。
主要是,我需要知道的是“isdigit()”,当使用try语句时,异常的“pass”关键字。
答案 0 :(得分:3)
这有效:
s = "Arkansas 40\n Washington 83\n North Dakota 49\n New Jersey 24"
sum(int(n) for n in s.split() if n.isdigit())
196
基本上.isdigit()方法可以解决这个问题。不需要try/except
,就好像字符串中没有数字一样,n
不符合isdigit()
条件,sum
将返回0。
答案 1 :(得分:2)
>>> s = "Arkansas 40\n Washington 83\n North Dakota 49\n New Jersey 24"
>>> sum([int(x.split()[-1]) for x in s.split('\n')])
196
答案 2 :(得分:1)
像这样的东西
import re
tot = 0
s = "Arkansas 40\n Washington 83\n North Dakota 49\n New Jersey 24"
for line in s.split('\n'):
ma = re.search('(\d+)', line)
if ma:
tot += ma.group(1)
print tot
答案 3 :(得分:1)
所以你需要先做的是从字符串中提取数字。您可以使用String.split()将字符串拆分为块,然后通过迭代它们来测试每个是否为数字,只返回整数。 例如,如果您有字符串s:
[int(i) for i in s.split('\n') if i.isdigit()]
将创建一个整数数组。那么你所要做的就是总结它们,这就是你的答案。
答案 4 :(得分:0)
滥用map
,filter
&的绝佳机会reduce
print reduce(lambda x,y: x+y,
map(lambda x: int(x),
filter(lambda x: x.isdigit(),
re.split(' |\n',s))))