将一个数字的列表转换为int

时间:2012-08-03 20:29:15

标签: regex list python-2.7 int

我有一个正则表达式,用于解析日志中的行#字符串。那条线#然后经过另一个正则表达式来提取线#。

例如:

这个正则表达式的一部分:

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

为了进一步处理我的信息,我需要将行号作为一个整数,并且因为如何做到这一点而失去解决方案。

3 个答案:

答案 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])