2012-08-03 74 views
0

我有一個正則表達式,用於解析日誌中的一行#字符串。然後該行#受到另一個正則表達式的提取#行。將一個數字的列表轉換爲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'] 

爲了進一步處理我的信息,我需要把行號作爲一個整數,並且爲了解決這個問題而丟失了一個解決方案。

回答

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

我希望它能幫助 - ^。^-

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

1

使用使用list comprehension

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

,如果你有這些列表,你可以將它們全部CONVER到整型:給你一個「串號」的列表轉換爲int

[int(i) for i in myl] 

導致整數列表。

你可以連接到你的代碼爲最適合,例如這個,

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