Python 没有替换 % 符号

Posted

技术标签:

【中文标题】Python 没有替换 % 符号【英文标题】:Python not replacing % symbol 【发布时间】:2012-02-19 09:10:42 【问题描述】:

我必须替换字符串中的符号,其中一个是 % 符号,现在我以此为例

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

但如果我这样做,它根本不会取代任何东西

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

然后 % 符号被替换没问题,如果我拿走 % 并在那里留下任何其他字符,它们也会被替换,只要我把那个 % 放在那里,整个事情就不起作用了。 奇怪的是,我在不同的机器上试过了,没问题,真的很奇怪

我正在使用 python 2.5.2

谢谢

【问题讨论】:

【参考方案1】:

顺便说一句,string.translate 很容易解决您的问题

import string
table = string.maketrans('()%', '   ')
li = string.translate(li, table)

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:
li = "this is () stuff %"
li.replace('()%', ' ')

你为什么希望它做任何事情?字符串"()%" 没有出现在您的原始字符串中。

此外,您没有将替换结果分配回li,从而丢弃了替换结果。

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

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

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

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

或者您也可以使用正则表达式,但这需要您了解正则表达式,并且由于您目前正在尝试学习 Python,因此可能需要同时解决一些问题。

【讨论】:

以上是关于Python 没有替换 % 符号的主要内容,如果未能解决你的问题,请参考以下文章

Python:通过替换其符号来创建字符串的所有衍生物

使用正则表达式 python 查找和替换符号

仅在特定条件下将 NaN 替换为“-”符号,Python-Pandas

如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号

WPS的Word里,如何批量替换指定符号的前后符号?

Python:替换字符串中多次出现的两个符号之间的所有字符