首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python提取数字并从列表中添加它们

Python提取数字并从列表中添加它们
EN

Stack Overflow用户
提问于 2015-03-15 23:19:00
回答 4查看 2.2K关注 0票数 0

我有一个字符串列表:

代码语言:javascript
复制
[' 86 miles\n', ' 43 miles\n', ' MV\n', ' 0.0 miles\n', ' 43 miles\n', '  15.0 miles\n', ' 0.0 miles\n', ' 0.0 miles\n', ' 0.0  miles  \n', ' 86 miles\n', '.7 miles', '5. miles']`

因此,有不同格式的数字:

86 .7 5. 0.0

后面跟着字符串的文本。

我需要把这个名单上的所有数字加起来。

添加部分显然很容易,但是我如何才能将数字输入到他们自己的列表中呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-15 23:37:48

代码语言:javascript
复制
>>> import re
>>> elements = [' 86 miles\n', ' 43 miles\n', ' MV\n', ' 0.0 miles\n', ' 43 miles\n', ' 15.0 m iles\n', ' 0.0 miles\n', ' 0.0 miles\n', ' 0.0 miles \n', ' 86 miles\n', ' .7 miles', ' 5. miles']
>>> _re_digits = re.compile(r"(-?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+)))")
>>> digits = []
>>> for element in elements:
    digits += [ float(n) for n in _re_digits.findall(element)]


>>> digits
[86.0, 43.0, 0.0, 43.0, 15.0, 0.0, 0.0, 0.0, 86.0, 0.7, 5.0]
>>> sum(digits)
278.7
票数 2
EN

Stack Overflow用户

发布于 2015-03-15 23:31:31

我们可以将所有字符串连接在一起,使用正则表达式提取所有数字,然后添加它们:

代码语言:javascript
复制
>>> import re
>>> l = [
    ' 86 miles\n', ' 43 miles\n', '  MV\n', ' 0.0 miles\n',
    ' 43 miles\n', '  15.0 miles\n', ' 0.0 miles\n',
    ' 0.0 miles\n', ' 0.0  miles  \n', ' 86 miles\n'
]
>>> sum(map(float, re.findall(r"\d+(?:\.\d+)?", "".join(l))))
273.0
票数 1
EN

Stack Overflow用户

发布于 2015-03-15 23:32:49

假设您想要这些数字作为浮动:

代码语言:javascript
复制
miles = [' 86 miles\n', ' 43 miles\n', ' MV\n', ' 0.0 miles\n', ' 43 miles\n', '  15.0 miles\n', ' 0.0 miles\n', ' 0.0 miles\n', ' 0.0  miles  \n', ' 86 miles\n']

total = 0.0
for s in miles:
    for t in s.split():
        try:
            total += float(t)
        except ValueError:
            pass
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29067425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档