如何用列表推导式结合正则表达式提取文本文件数字并求和?
用列表推导式简化正则提取数字求和代码
填充完成的简化代码
import re print( sum( [ int(num) for num in re.findall('[0-9]+', open(input('Enter a file Name: ')).read()) ] ) )
模板填充说明
把模板里的星号部分按以下内容替换:
******→int(num):将正则匹配到的字符串数字转换为整数***→for:列表推导式的循环关键字**********→re.findall:正则表达式的全匹配方法**************************→open(input('Enter a file Name: ')):打开用户输入的目标文件
带异常处理的两行版本
如果要保留原代码的文件不存在容错逻辑,可以写成:
import re try: print(sum([int(n) for n in re.findall(r'\d+', open(input('Enter a file Name: ')).read())])) except: print('Enter an existing file name')
核心思路
- 用
open(...).read()一次性读取整个文件内容,无需逐行遍历 re.findall(r'\d+', ...)会在整个文本中匹配所有连续数字字符串(\d+和[0-9]+功能等价)- 列表推导式直接将所有匹配结果转为整数,再用
sum()求和后打印
内容的提问来源于stack exchange,提问作者Heheboi
相关产品推荐
相关产品推荐

