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()を使用して、1 つの「文字列番号」のリストを int に変換します。

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

これらのリストがある場合は、リスト内包表記を使用してすべてを int に変換できます。

[int(i) for i in myl]

その結果、int のリストが生成されます。

これをコードに最適なものとしてフックできます。

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 に答える