使用正则表达式拆分长度为 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)]
>>>