我需要替换一些字符如下:&➔\&,#➔\#,…
我的编码如下,但我想应该有更好的方法。有提示吗?
strs = strs.replace('&', '\&')
strs = strs.replace('#', '\#')
...
我需要替换一些字符如下:&➔\&,#➔\#,…
我的编码如下,但我想应该有更好的方法。有提示吗?
strs = strs.replace('&', '\&')
strs = strs.replace('#', '\#')
...
当前回答
这将帮助人们找到一个简单的解决方案。
def replacemany(our_str, to_be_replaced:tuple, replace_with:str):
for nextchar in to_be_replaced:
our_str = our_str.replace(nextchar, replace_with)
return our_str
os = 'the rain in spain falls mainly on the plain ttttttttt sssssssssss nnnnnnnnnn'
tbr = ('a','t','s','n')
rw = ''
print(replacemany(os,tbr,rw))
输出:
他是我的家人他的pli
其他回答
这个怎么样?
def replace_all(dict, str):
for key in dict:
str = str.replace(key, dict[key])
return str
then
print(replace_all({"&":"\&", "#":"\#"}, "&#"))
输出
\&\#
类似的答案
>>> a = '&#'
>>> print a.replace('&', r'\&')
\&#
>>> print a.replace('#', r'\#')
&\#
>>>
你想要使用一个'raw'字符串(用'r'作为替换字符串的前缀),因为raw字符串不会特别对待反斜杠。
像这样简单地连接替换函数
strs = "abc&def#ghi"
print strs.replace('&', '\&').replace('#', '\#')
# abc\&def\#ghi
如果替换的数量更多,你可以用这种通用的方法
strs, replacements = "abc&def#ghi", {"&": "\&", "#": "\#"}
print "".join([replacements.get(c, c) for c in strs])
# abc\&def\#ghi
>>> string="abc&def#ghi"
>>> for ch in ['&','#']:
... if ch in string:
... string=string.replace(ch,"\\"+ch)
...
>>> print string
abc\&def\#ghi
你可以考虑写一个通用的转义函数:
def mk_esc(esc_chars):
return lambda s: ''.join(['\\' + c if c in esc_chars else c for c in s])
>>> esc = mk_esc('&#')
>>> print esc('Learn & be #1')
Learn \& be \#1
通过这种方式,您可以使用应该转义的字符列表使您的函数可配置。