python - 如何使用正则表达式拆分列表元素

标签 python regex python-2.7

鉴于此列表:

['MIA', 'BOS', '08:17 AM', '-107', '-103', '08:17 AM', '+1 -111', '-1 +103', u'91', u'93']

我想在空间上分割 +1 -111-1 +103 以获得以下结果:

['MIA', 'BOS', '08:17 AM', '-107', '-103', '08:17 AM', '+1', '-111', '-1', '+103', u'91', u'93']

这是我需要的正则表达式:

(?<=\d)\s(?=[-+]\d\d\d)

但显然我不知道如何将其应用于列表。显然,带有切片的解决方案(例如始终拆分列表的第 n 个元素)并不受欢迎。我更喜欢这样更有效率。

最佳答案

使用现有的re,您可以使用以下方法来展平单个元素的分割:

import re
from itertools import chain

some_list = ['MIA', 'BOS', '08:17 AM', '-107', '-103', '08:17 AM', '+1 -111', '-1 +103', u'91', u'93']
print list(chain.from_iterable(re.split('(?<=\d)\s(?=[-+]\d\d\d)', s) for s in some_list))
# ['MIA', 'BOS', '08:17 AM', '-107', '-103', '08:17 AM', '+1', '-111', '-1', '+103', u'91', u'93']

关于python - 如何使用正则表达式拆分列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286068/

相关文章:

python - 如何忽略 FOR 函数中列表中的第一项?

python - 使用 Python + Beautiful Soup 抓取任何包含 5 个数字的字符串

python-2.7 - pandas:两个系列之间的差异返回 None

python - 使用 Python Pandas 读取制表符分隔的文件

python - 将 python 列表拆分为其他 "sublists"即较小的列表

python - 这个递归算法的复杂度是多少?

python - 为 mysql 日期时间字段创建并插入 strftime 对象

python - Django读取excel(xlsx)文件以显示在表格中

python - 取出列表中某些项目的最后一个字母

regex - 检查字符串中是否只有空格