我有一个看起来像这样的字符串:
1080p [2.1GB] 720p [1.3GB] 480p [500MB]
在Python中,我想用[x]
替换所有,
。我试过这段代码:
import re
s1 = '1080p [2.1GB] 720p [1.3GB] 480p [500MB]'
s2 = re.sub("[(.*?)]", ", ", s1)
但是,我得到了这个输出:1080p [2, 1GB] 720p [1, 3GB] 480p [500MB]
。
相反,我希望获得类似1080p, 720p, 480p
的内容。
答案 0 :(得分:1)
您需要转义括号并使用原始字符串:
s2 = re.sub(r"\[(.*?)\]", ", ", s1)
请注意,在字符类之外,这些符号 - .^$*+?()[{\|
- 应该按字面意思进行转义。
这是a demo
如果您不打算使用[...]
内的内容,请删除圆括号。
s2 = re.sub(r"\[.*?\]", ", ", s1)
要获得“更干净”的字符串,您可以使用更复杂的正则表达式和strip()
:
import re
s1 = '1080p [2.1GB] 720p [1.3GB] 480p [500MB]'
s2 = re.sub(r"\s*\[.*?\]", ",", s1)
print s2.strip(' ,')
another demo的输出:1080p, 720p, 480p
答案 1 :(得分:1)
您可以使用re.split
。
>>> s1 = '1080p [2.1GB] 720p [1.3GB] 480p [500MB]'
>>> ', '.join(i for i in re.split(r'\s*\[[^\]]*\]\s*', s1) if i)
'1080p, 720p, 480p'