我有一个字符串列表,如下所示:
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
并且其长度可能会更改)并将其放在没有像这样的空格的列表中:< / p>
['D', 'G', 'D', 'D', 'D', 'D', 'D', 'R', 'Y', 'D', 'y', 'D', 'G', 'R', 'D', 'D', 'Y', 'G', 'R']
答案 0 :(得分: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 != ' ']