Python不替换%符号

时间:2012-01-26 08:13:17

标签: python replace symbols

嘿伙计我有点问题,我必须替换字符串中的符号其中一个是%符号现在我用这个作为例子

li = "this is () stuff %"
li.replace('()%', ' ')

但是,如果相反,它根本不会取代任何东西

li = "this is () stuff %"
li.replace('%', ' ')

然后%符号被替换没有问题,如果我拿走%并留下任何其他角色,他们也都被替换,只要我把那个%放在那里,整个事情都不行。 奇怪的是,我尝试过不同的机器并且它没有问题,这真的很奇怪

使用python 2.5.2

由于

4 个答案:

答案 0 :(得分:7)

replace匹配并用第二个参数替换整个第一个参数。

>>> 'abc'.replace('ab', '!')
'!c'
>>> 'abc'.replace('abd', '!')
'abc'

答案 1 :(得分:7)

顺便说一句,用string.translate

解决问题很容易
import string
table = string.maketrans('()%', '   ')
li = string.translate(li, table)

答案 2 :(得分:3)

问题是str.replace仅替换其第一个参数的完整匹配。你想要的是使用正则表达式:

import re
li = "this is () stuff %"
li = re.sub('[()%]', ' ', li)

答案 3 :(得分:2)

li = "this is () stuff %"
li.replace('()%', ' ')

为什么你会期望这样做呢?字符串"()%"未出现在原始字符串中。

此外,您不会将替换结果丢回li,从而丢弃替换结果。

假设你想用空格替换每个字符,那么你想要的是这样的:

for r in "()%":
   li = li.replace(r, " ")

您也可以使用字符串的translate方法。

from string import maketrans
li = li.translate(maketrans("()%", "   "))

或者您也可以使用正则表达式,但这需要您了解正则表达式,并且当您正在尝试学习Python时,可能需要同时解决这个问题。 / p>