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 没有替换 % 符号的主要内容,如果未能解决你的问题,请参考以下文章
仅在特定条件下将 NaN 替换为“-”符号,Python-Pandas