2013-01-18 146 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