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至少具有三个字符的组,那么您可以使用正则表达式来实现该效果,然后在...之后将其“展平”到列表中,例如:

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']

如果它总是在两个项目之间,那么可以使用内置的字符串函数来提取它,例如:

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