1

次のような文字列のリストがあります。

H PL->01 Tx=000/006 Ph=00/000  DGDD DDDR YDyD GRDD YGR  Dets=     003,003,003,003,003,003,003,003,003,003,003,003,  ports= 255,255,255,255,255,255,255,255,'

一致するコンテンツを抽出できるようにしたいDGDD DDDR YDyD GRDD YGR(これは変更されますが、常に文字がD,G,R,Y,yあり、その長さは変更される可能性があります)、次のように空白なしでリストに入れます。

 ['D', 'G', 'D', 'D', 'D', 'D', 'D', 'R', 'Y', 'D', 'y', 'D', 'G', 'R', 'D', 'D', 'Y', 'G', 'R']
4

1 に答える 1

3

基準がDGRYy少なくとも 3 文字のグループである場合は、正規表現を使用してその効果を出し、その後リストに「平坦化」することができます... 例:

import re
from itertools import chain
print list(chain.from_iterable(re.findall('[DGRYy]{3,}', data)))
# ['D', 'G', 'D', 'D', 'D', 'D', 'D', 'R', 'Y', 'D', 'y', 'D', 'G', 'R', 'D', 'D', 'Y', 'G', 'R']

常に 2 つのアイテムの間にある場合は、組み込みの文字列関数を使用して抽出することができます。

print [ch for ch in data[data.index('Ph'):].partition('Dets=')[0].split(' ', 1)[1] if ch != ' ']
于 2013-03-17T17:04:30.013 に答える