0

まったくの初心者向け質問:

Excel ファイルがあり、列のセルから個別の 2 文字の頭字語を取得したいと考えています。

のように見えます

ケーキ_フレーバー

fb&ms yt/id

ニューヨーク&CD

私がやりたいのは、これらの頭字語のそれぞれの内容を、Python のリストまたは任意の構造に分割するか、それらを別の列に置き換えることです。

最後に私が持っているように

1 FB ジュ

2 ミリ秒

3 yt CD

4ID

ドキュメントを読みましたが、さまざまな頭字語を分割するための & および / または eve を取り除くことができないため、Unicode の解析に行き詰まります。

ヒントはありますか?お願いします?

4

1 に答える 1

0

正規表現を使用して、長さが 2 以上のすべての単語を分割します。次に、2 文字より長いものを除外します。

>>> import re
>>> s = u'fb&ms yt/id a bc def ghij'
>>> t = re.findall(ur'[a-zA-Z]{2,}', s)
>>> t
[u'fb', u'ms', u'yt', u'id', u'bc', u'def', u'ghij']
>>> [x for x in t if len(x) == 2]
[u'fb', u'ms', u'yt', u'id', u'bc']
>>>

ピースを移調する方法:

>>> row1 = [u'fb', u'ms', u'yt', u'id']
>>> row2 = [u'ju', u'ny', u'id']
>>> zip(row1, row2)
[(u'fb', u'ju'), (u'ms', u'ny'), (u'yt', u'id')] # wrong, missing tail
>>> import itertools
>>> list(itertools.izip_longest(row1, row2))
[(u'fb', u'ju'), (u'ms', u'ny'), (u'yt', u'id'), (u'id', None)]
>>>

行数が可変であると仮定すると、次のようになります。

>>> rows = [[u'fb', u'ms', u'yt', u'id'], [u'ju', u'ny', u'id']]
>>> list(itertools.izip_longest(*rows))
[(u'fb', u'ju'), (u'ms', u'ny'), (u'yt', u'id'), (u'id', None)]
>>>
于 2013-01-24T19:00:33.263 に答える