我有两个字符串,我想把数字序列和其他的东西分开
例如:
import re
s = 'abc123abc'
print(re.split('(\d+)', s))
s = 'abc123abc123'
print(re.split('(\d+)', s))
输出如下所示:
['abc','123','abc']
['abc','123','abc','123','
注意,在第二种情况下,后面有一个空字符串
显然,我可以测试它,并在必要时删除它,但它似乎很麻烦,我想知道RE是否可以改进以适应这种情况
Tags:
为此使用正则表达式的简单方法是^{} :
但是使用^{} 似乎更容易、更自然。毕竟,您正在基于单个条件对iterable进行分块:
您可以使用
filter
并且不要像下面那样返回此空字符串:通过感谢@chepner,您可以生成如下列表:
如果您可能有符号或其他,则需要
split
:这与
re.split()
本身的实现有关:您不能更改它。当函数拆分时,它不会检查捕获组后面的任何内容,因此它不能为您选择保留或丢弃拆分后留下的空字符串。它只是在那里拆分,并将字符串的其余部分(可以为空)留到下一个周期如果您不想要那个空字符串,可以在将结果收集到列表中之前以各种方式除去它。user1740577就是一个例子,但就我个人而言,我更喜欢列表理解,因为它更适合于简单的过滤器/映射操作:
我建议不要在列表已经创建之后检查并删除元素,因为它涉及更多的操作和分配
相关问题 更多 >
编程相关推荐