鉴于此列表:
['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/