0

新手问题总数:

我有一个 excel 文件,想从列中的单元格中获取单独的两个字母首字母缩写词。

看起来像

Cake_Flavour

FB&MS yt/id

纽约&cd

我想做的是能够将每个首字母缩略词的内容分成一个列表或python中的任何结构,或者只是在不同的列中替换它们

所以最后我会有

1 脸书

2 毫秒纽约

3 年光盘

4 身份证

我已阅读文档,但由于无法摆脱 & 和 / 或 eve 来拆分不同的首字母缩写词,因此我被 unicode 解析困住了。

任何提示?请?

4

1 回答 1

0

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