我目前正在尝试理解正则表达式。我很难理解如何解决这个问题:
import re
fhand = open("assign11.txt")
lst = list()
for line in fhand:
line = line.rstrip()
x = re.findall("([\d]+)", line)
if not len(x) > 0: continue
numlist = int(x[:])
d = list.append(numlist)
print(lst)
我希望程序在re.findall()的帮助下匹配每个整数(0-9)的子字符串,然后将它找到的子字符串转换为整数,将它们附加到列表中,然后求它们起来。
Put我无法找到将每行中的所有子串转换为整数的方法,只有当我写int(x [0])时它才有效,但如果我写(x [:])则不行。如何将每个子字符串(当子字符串中有多个数字时)更改为整数?
答案 0 :(得分:1)
使用map
函数将字符串列表转换为整数列表。 map
有两个参数:列表以及您希望应用于列表中每个元素的函数。
map(int, ['1','2'])
> [1,2]
完整流程的一个示例:
import re
string = "Hello this is number 1,2 and 3. We sum to 6. "
print sum(map(int, re.findall(r'\d+', string)))
>> 12
答案 1 :(得分:0)
使用列表推导将列表中的每个项目转换为新列表中的整数:
list_of_strings = ['1', '11', '123', '-12']
list_of_ints = [int(x) for x in list_of_strings]
>>> list_of_ints
[1, 11, 123, -12]
这是基本的想法。应用它来汇总文件中的所有整数:
import re
with open("assign11.txt") as fhand:
numbers = []
for line in fhand:
numbers.extend(re.findall("([\d]+)", line))
print(numbers)
print(sum(int(x) for x in numbers))
此代码使用findall()
将numbers
找到的项添加到list.extend()
列表中。 list.append()
会添加re,findall()
返回的列表,这不是您想要的。最后,数字字符串将转换为整数并计算总和。