0

我有一个正则表达式,可以从日志中解析 line# 字符串。然后对该 line# 进行另一个正则表达式以提取 line#。

例如:

此正则表达式的一部分:

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']

为了进一步处理我的信息,我需要将行号作为整数,并且对于如何做到这一点的解决方案感到迷茫。

4

3 回答 3

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))

希望对你有帮助-^.^-

于 2012-08-03T20:35:05.987 回答
1

使用int()将您的一个“字符串数字”列表转换为 int:

 myl = ['206']
 int(myl[0])
 206

如果您有这些列表,则可以使用列表理解将它们全部转换为整数:

[int(i) for i in myl]

产生一个整数列表。

您可以将其挂钩到您的代码中,例如,

int(re.findall(r'\b\d+\b', linestr)[0])

于 2012-08-03T20:42:33.367 回答
0
int(re.findall(r'\b\d+\b', linestr)[0])

?

于 2012-08-03T20:31:44.803 回答