使用Python正则表达式替换字符串中的多个变量值

时间:2015-07-10 11:03:39

标签: python regex

我有一个看起来像这样的字符串:

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的内容。

2 个答案:

答案 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'