0

情報を 1 行に分割するスクリプトがあります。それを分割して必要な情報を抽出することに成功しましたが、スラッシュが表示されます :/ その後にあるものだけを取得したいのですが、例を次に示します。

import re 

data = "12:05:12.121    O:CLASS (SMS:/xxx.xxx@xxx.xx) R:VOICE/1654354 mid:4312" 
ms = re.match(r'(\S+).*mid:(\d+)', data) # extract time and mid 
k = re.findall(r"/\S+", data ) # extract source and destination 
result = { 'time':ms.group(1), 'mid':ms.group(2), "source":k[0],"Destination":k[1]}

print result 

これが結果です{'source': '/xxx.xxx@xxx.xx)', 'Destination':'/1654354', 'mid':'4312','time':'12.05.12.121'}

そして、私が望む結果は、次のようにスラッシュなしです:

{'source': 'xxx.xxx@xxx.xx)', 'Destination':'1654354', 'mid':'4312','time':'12.05.12.121'} 
4

1 に答える 1

3

\S+をキャプチャ グループにラップします。

k = re.findall(r"/(\S+)", data)

そして、1 つの正規表現ですべての情報を取得する別の方法を次に示します。

import re 

data = "12:05:12.121      O:CLASS (SMS:/xxx.xxx@xxx.xx) R:VOICE/1654354 mid:4312" 
result = re.search(r'''
      (?P<time>.*?)
      \s+
      .*?
      \s+
      \(
          (?P<type>.*?):/(?P<source>.*?)
      \)
      \s+
      .*/(?P<destination>\d+)
      \s+
      mid:(?P<mid>\d+)
''', data, re.VERBOSE)

print result.groupdict()
于 2013-04-19T09:15:42.623 に答える