Python替换为反斜杠

2024-05-17 00:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,我想在一些字符前加一个\。你知道吗

我用字符串的形式表示字符串,我要做的是:

charmap = {':', '(', ')', '{', '}', '[', ']', '<', '>', '/', '\\', '='}
for key in charmap:
    terms_string = terms_string.replace(key, '\\'+key)

一切正常,但我得到的是\\,而不是\。你知道吗

例如我得到的charmap

{'(', ')', '/', ':', '<', '=', '>', '[', '\\', ']', '{', '}'}

代替

{'(', ')', '/', ':', '<', '=', '>', '[', '\', ']', '{', '}'}

这只发生在字符\,而不是其他字符。你知道吗

知道为什么会这样吗?可能是Python配置?谢谢!你知道吗


Tags: key字符串inforstring字符replace形式
2条回答

我不确定替换\时您的目标是什么,但这些选项可能适合您。你知道吗

terms_string = "foo (bar fo/o: b\a=r)"
charmap = {':', '(', ')', '{', '}', '[', ']', '<', '>', '/', '\\', '='}
for key in charmap:
    terms_string = terms_string.replace(key, "\\{}".format(key))
print(terms_string)
>>> foo \(bar fo\/o\: b\=r\)

或者

import re
terms_string = "foo (bar fo/o: b\a=r)"
result = re.sub(r"([:\(\)\{\}<>/\\=])", r"\\\1", terms_string)
print(result)
>>> foo \(bar fo\/o\: b\=r\)

还要考虑re.escape

terms_string = "foo (bar fo/o: b\a=r)"
print(re.escape(terms_string))
>>> foo\ \(bar\ fo/o:\ b=r\)

这是因为\是转义字符。如果你给一个单一的\它会寻找旁边的字符来理解这意味着什么。所以对于一个文本\它放了一个\\,然后不转义\。转义字符是具有特殊意义的字符。例如'\n'表示新行。不是字面意义上的\n。希望这能澄清您的疑问。这不仅在python中发生,而且在大多数语言中都会发生。你知道吗

进一步reading

相关问题 更多 >