0

.txtファイルからの長い文字列を毎回解析するにはどうすればよいですか

2文字

?

4

2 に答える 2

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

また

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']
>>>
于 2013-01-18T15:04:40.230 に答える
2

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'
于 2013-01-18T15:12:17.787 に答える