使用可变指示器在Python中拆分字符串

3
假设我有一个字符串。
a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'

它会自然地分成:a1、a2和a3。

['!!!!!!','@@@@@@','&&&&&&','::::']

我想使用 split 函数,类似这样:

>>> a.split('a*')
* 表示 a 后面可以是任何字符。有没有一种直接的方法实现这个功能?

可能是 Python:按特定模式拆分 的重复问题。 - Aman Jaiswal
在字符“a”之后真的有任何字符,还是只有数字? - Toto
3个回答

2
s = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
import re

print(re.split(r'a[0-9]+', s))

0

通过使用正则表达式,使用模块re,您可以尝试以下操作:

import re
a = re.split(r'a\d','!!!!!!a1@@@@@@a2&&&&&&a3::::')

如果您想在分割键方面更加具体,请尝试以下方法:
a = re.split(r'a1|a2|a3','!!!!!!a1@@@@@@a2&&&&&&a3::::')

并根据您的意愿制定自定义条件。


0

虽然不如@ Menglong的解决方案高效,但你可以在不导入re的情况下仅使用列表和字符串操作来完成它:

>>> a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
>>> s = a.split('a')
>>> s[:1] + [x[1:] for x in s[1:] if x]
['!!!!!!', '@@@@@@', '&&&&&&', '::::']

这个方法可行是因为如果你在'a'处分割,除了第一个段落的第一个字符外,其余每个段落的第一个字符都是你想要去掉的*字符。

这个解决方案并不理想,只是我做练习时尝试的一种方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接