2013-01-18 96 views
0

我怎么能分析一个长字符串,来自.TXT文件解析字符串每2个字母

2个字符

+0

你有你到目前为止尝试做的代码示例? – danseery

+5

我不明白这个问题。文本文件是一长串字符。你在问'我怎么能把它分成两个字符块? – katrielalex

+0

你能解释一下好吗。你想要一个文件对象中的每一对连续的字符吗? – Steve

回答

2

你可以只是压缩两个字符串,一个的间隙用itertools.izip

>>> from itertools import izip 
>>> map(''.join, izip(data, data[1:])) 
['fo', 'oo', 'ob', 'ba', 'ar'] 

偏移

>>> data = "foobar" 
>>> map(''.join, zip(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所提到的,子字符串会重叠。在情况下,如果你想不重叠的子串,或者参考@邓肯的回答,或@邓肯的评论或斑配方

>>> [''.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' 
+0

为了完整您应该补充一点,如果OP不想重叠,则使用zip(data [:: 2],data [1: :2])' – Duncan

+0

我怎么发送到一个输出.txt地图的结果(''。join,zip(data,data [1:])) – PythonNewbie

+0

当我保存那个地图....到一个例如变量a,并给出一个parse.py>解析。txt我得到: ['fo','oo','ob','ba','ar'] isntead of fo oo ob ba ar – PythonNewbie

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

掌声鼓掌。做另一个跳过空白! – PinkElephantsOnParade

+0

@PinkElephantsOnParade第一个跳过空白,不够? – ATOzTOA

+0

我的意思是形式['Th','eq','ui'...] - 在提取之前跳过空白区而不是在之后。但我不是原来的海报 - 那只是为了我自己的乐趣,哈哈。 – PinkElephantsOnParade