每两个字母解析字符串

时间:2013-01-18 14:57:24

标签: python parsing

如何解析每个来自 .txt 文件的长字符串

  

2个字符

2 个答案:

答案 0 :(得分:2)

尝试

print re.findall(r'[\S]{1,2}', "The quick brown fox jumped over the lazy dog")

>>
['Th', 'e', 'qu', 'ic', 'k', 'br', 'ow', 'n', 'fo', 'x', 'ju', 'mp', 'ed', 'ov', 'er', 'th', 'e', 'la', 'zy', 'do', 'g']

OR

print re.findall(r'.{1,2}', "The quick brown fox jumped over the lazy dog")

>>
['Th', 'e ', 'qu', 'ic', 'k ', 'br', 'ow', 'n ', 'fo', 'x ', 'ju', 'mp', 'ed', ' o', 've', 'r ', 'th', 'e ', 'la', 'zy', ' d', 'og']

<强>更新

根据您的具体要求:

>>> print re.findall(r'[\S]{1,2}', "08AB78UF")
['08', 'AB', '78', 'UF']
>>>

答案 1 :(得分:2)

您只需压缩两个字符串,间隔为一个偏移量

>>> data = "foobar"
>>> map(''.join, zip(data, data[1:]))
['fo', 'oo', 'ob', 'ba', 'ar']

使用itertools.izip

的类似解决方案
>>> from itertools import izip
>>> map(''.join, izip(data, data[1:]))
['fo', 'oo', 'ob', 'ba', 'ar']

如果您使用的是Py3.X,请将地图转换为LC

>>> [''.join(e) for e in  izip(data, data[1:])]
['fo', 'oo', 'ob', 'ba', 'ar']

正如@Duncan所提到的,子字符串会重叠。如果你想要不重叠的子串,可以参考@Duncan的答案,或@Duncan的评论或石斑鱼食谱

>>> [''.join(e) for e in list(izip_longest(*[iter(data)] * 2,fillvalue=''))]
['fo', 'ob', 'ar']

您可以轻松地将结果列表连接到字符串

>>> ' '.join(''.join(e) for e in  izip(data, data[1:]))
'fo oo ob ba ar'