0

これは私が今持っているものです:

import re

x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"    
x = x.replace(' ', '')
m = re.findall('(?<=:)\S+', x)
print m 

そして、この$ script.py > result.txtを作成するために、次のような出力が必要です。

Joyce 192.111.1.1 192.168.1.1
4

3 に答える 3

2

結果として必要なテキストの一致を見つける代わりに、不要なものを置き換える方が簡単な場合があります。

>>> import re
>>> x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
>>> re.sub(r'\w+:\s', '', x)
'Joyce 192.111.1.1 192.168.1.1'

ただし、re.findall()ここで使用したい場合は、現在のアプローチに似た 1 つのオプションがあります。

>>> ' '.join(re.findall(r'(?<=:\s)\S+', x))
'Joyce 192.111.1.1 192.168.1.1'

\s入力文字列の各コロンの後にスペースがあるため、否定後読みでが必要です。

于 2013-03-12T16:13:50.293 に答える
0

コードを少し変更すると (スペースを削除せず、後ろ向きに含めてください)、完全に機能します。

import re

x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"    
m = re.findall('(?<=:\s)\S+', x)
print " ".join(m) 
于 2013-03-12T16:17:12.693 に答える