我有一个正则表达式,用于解析日志中的行#字符串。那条线#然后经过另一个正则表达式来提取线#。
例如:
这个正则表达式的一部分:
m = re.match(r"^(\d{4}-\d{2}-\d{2}\s*\d{2}:\d{2}:\d{2}),?(\d{3}),?(?:\s+\[(?:[^\]]+)\])+(?<=])(\s+?[A-Z]+\s+?)+(\s?[a-zA-Z0-9\.])+\s?(\((?:\s?\w)+\))\s?(\s?.)+", line)
将匹配此:
(line 206)
然后这个正则表达式:
re.findall(r'\b\d+\b', linestr)
给我
['206']
为了进一步处理我的信息,我需要将行号作为一个整数,并且因为如何做到这一点而失去解决方案。
答案 0 :(得分:1)
您可以尝试:
line_int = int(re.findall(r'\b\d+\b', linestr)[0])
或者如果列表中有多个元素:
lines_int = [int(i) for i in re.findall(r'\b\d+\b', linestr)]
甚至
lines_int = map(int, re.findall(r'(\b\d+\b)+', linestr))
我希望它有所帮助 - ^。^ -
答案 1 :(得分:1)
使用int()将一个“字符串编号”的列表转换为int:
myl = ['206']
int(myl[0])
206
如果您有这些列表,可以使用list comprehension将它们全部转换为整数:
[int(i) for i in myl]
生成一个整数列表。
您可以将其与最适合的代码挂钩,例如
int(re.findall(r'\b\d+\b', linestr)[0])
答案 2 :(得分:0)
int(re.findall(r'\b\d+\b', linestr)[0])