【发布时间】:2014-08-26 22:41:50
【问题描述】:
假设我有一个字符串s,其中包含字母和两个分隔符1 和2。我想按以下方式拆分字符串:
- 如果子字符串
t介于1和2之间,返回t - 否则,返回每个字符
所以如果s = 'ab1cd2efg1hij2k',预期的输出是['a', 'b', 'cd', 'e', 'f', 'g', 'hij', 'k']。
我尝试使用正则表达式:
import re
s = 'ab1cd2efg1hij2k'
re.findall( r'(1([a-z]+)2|[a-z])', s )
[('a', ''),
('b', ''),
('1cd2', 'cd'),
('e', ''),
('f', ''),
('g', ''),
('1hij2', 'hij'),
('k', '')]
从那里我可以通过[ x[x[-1]!=''] for x in re.findall( r'(1([a-z]+)2|[a-z])', s ) ] 得到我的答案,但我仍然不明白输出。 documentation 表示如果模式有多个组,findall 返回一个元组列表。但是,我的模式只包含一组。欢迎任何解释。
【问题讨论】: