python - 正则表达式列表中的整数总和
问题描述
使用从 re.findall() 创建的整数列表,我们如何为整数创建总和?
示例文件:
A number: 606
Another number could be 52 or 38
Another number below:
55
打印使用 RegEx 捕获创建的列表:
import re
fileHandle = open("sample.txt", "r")
for line in fileHandle:
#RegEx: Match all ints anywhere in line
num = re.findall("\d+", line)
print(num)
输出:
['606']
['52', '38']
[]
['55']
解决方案
您必须将(嵌套)列表的项目从str
转换为int
。sum
您可以使用内置函数在单个嵌套生成器表达式中执行此操作:
>>> sum(int(x) for line in filehandle for x in re.findall(r"\d+", line))
751
或者没有嵌套,使用read()
来获取文件的全部内容(如果它不是太大):
>>> sum(int(x) for x in re.findall(r"\d+", filehandle.read()))
751
或者使用map
而不是生成器表达式:
>>> sum(map(int, re.findall(r"\d+", filehandle.read())))
751
或者,如果您想要每行的总和(map
作为练习留给读者的版本):
>>> [sum(int(x) for x in re.findall(r"\d+", line)) for line in filehandle]
[606, 90, 0, 55]
(当您在交互式 shell 中尝试这些时,请记住文件将在每个之后“用尽”,因此您必须在测试下一个之前重新打开文件。另请注意,使用\d+
您可能会得到令人惊讶的结果,如果您的文件包含例如浮点数或 IP 地址。)
推荐阅读
- wordpress - 如何使用 FTP 或 WP 仪表板安装 SSL 证书
- sql-server - ADODB SQLServer 与 Seek 和 Index 的连接
- reactjs - 为不相交的图像调用相交观察者的回调
- sql - 列出对历史数据库中记录的更改
- python - 如何与 numba 中的 cffi void 指针交互
- php - PHP 中的 $_SESSION:页面重新加载时未读取变量
- php - 用于搜索的多个元键和元值的 WordPress 自定义查询
- django - Django 使用外键渲染为 PDF
- javascript - 如何在getgauge表中附加屏幕截图
- c++ - 您是否缓存 LoadLibrary HINSTANCE?