试图找到所有出现的字符
string1 = '%(example_1).40s-%(example-2)_-%(example3)s_'
这样输出就会出现' - ' ' _'不在括号中
['-', '_', '-', '_']
不需要关心嵌套括号
答案 0 :(得分:5)
您可以使用模块re
通过将正则表达式传递给它
import re
str = '%(example_1).40s-%(example-2)_-%(example3)s_'
#remove all occurences of paratheses and what is inside
tmpStr = re.sub('\(([^\)]+)\)', '', str)
#take out other element except your caracters
tmpStr = re.sub('[^_-]', '', tmpStr)
#and transform it to list
result_list = list(tmpStr)
结果
['-', '_', '-', '_']
就像Bharath shetty在评论中提到的那样,不要使用str
,它是python中内置字符串的保留字
答案 1 :(得分:2)
以下内容将为您提供输出。:
>>> import re
>>> str = '%(example_1).40s-%(example-2)_-%(example3)s_'
>>> print list("".join(re.findall("[-_]+(?![^(]*\))", str)))
['-', '_', '-', '_']
这样做是在'-'
中找到包含'_'
和/或str
的所有子字符串,而不在括号中。由于这些是子字符串,我们通过连接和分割成列表来获得所有这些匹配字符。