python将单反斜杠替换为双反斜杠



在python中,我试图用双反斜杠("\")替换单个反斜杠("\")。我有以下代码:

directory = string.replace("C:UsersJoshDesktop20130216", "", "\")

然而,这会给出一条错误消息,表示它不喜欢双反斜杠。有人能帮忙吗?

这里不需要使用str.replacestring.replace,只需将该字符串转换为原始字符串:

>>> strs = r"C:UsersJoshDesktop20130216"
           ^
           |
       notice the 'r'

下面是上面字符串的repr版本,这就是您在这里看到\的原因。但是,实际上实际的字符串只包含'',而不包含\

>>> strs
'C:\Users\Josh\Desktop\20130216'
>>> s = r"fo"
>>> s            #repr representation
'f\o'
>>> len(s)   #length is 3, as there's only one `''`
3

但是,当您要打印这个字符串时,您不会在输出中得到'\'

>>> print strs
C:UsersJoshDesktop20130216

如果希望字符串在print期间显示'\',则使用str.replace:

>>> new_strs = strs.replace('\','\\')
>>> print new_strs
C:\Users\Josh\Desktop\20130216

repr版本现在将显示\\:

>>> new_strs
'C:\\Users\\Josh\\Desktop\\20130216'

让我简单明了。让我们使用python中的re模块来转义特殊字符。

Python脚本:

import re
s = "C:UsersJoshDesktop"
print s
print re.escape(s)

输出:

C:UsersJoshDesktop
C:\Users\Josh\Desktop

说明:

现在观察re.eescape函数在转义给定字符串中的特殊字符时,我们可以在每个反斜杠之前添加另一个反斜杠,最后输出结果是一个双反斜杠,即所需的输出。

希望这对你有帮助。

使用转义符:"full\path\here""\""\\"

在python中,(反斜杠)用作转义符。这意味着,在您希望插入特殊字符(如换行符)的地方,您将使用反斜杠和另一个字符(换行符为n

使用示例字符串,您会注意到,当您将"C:UsersJoshDesktop20130216"放入repl中时,您将得到"C:\Users\Josh\Desktopx8130216"。这是因为2在python字符串中具有特殊的含义。如果要指定,则需要在字符串中放入两个\

"C:\Users\Josh\Desktop\28130216"

另一个选项是通过使用r 预挂起字符串来通知python,您的整个字符串不得使用作为转义符

r"C:UsersJoshDesktop20130216"

这是一个"原始"字符串,在需要使用大量反斜杠的情况下非常有用,例如正则表达式字符串。

如果您仍然希望用\替换单个,那么您将使用:

directory = string.replace(r"C:UsersJoshDesktop20130216", "\", "\\")

请注意在上面的最后两个字符串中我没有使用r'。这是因为,当您使用r'形式的字符串时,您不能用单个 来结束该字符串

为什么可以';t Python';s的原始字符串文字以一个反斜杠结尾?

https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-反斜杠是转义字符/

在您的案例中可能存在语法错误,你可以把线路改成:

directory = str(r"C:UsersJoshDesktop20130216").replace('\','\\')

它为您提供正确的以下输出:

C:\Users\Josh\Desktop\20130216

反斜杠表示一个特殊的转义符。因此,directory = path_to_directory.replace("", "\")会导致Python认为要替换的第一个参数直到第二个参数的起始引号才结束,因为它将结束引号理解为转义符。

directory=path_to_directory.replace("\","\\")

给定源字符串,使用os.path进行操作可能更有意义,但这里有一个字符串解决方案;

>>> s=r"C:UsersJoshDesktop\20130216"
>>> '\\'.join(filter(bool, s.split('\')))
'C:\\Users\\Josh\\Desktop\\20130216'

注意,split将源字符串中的\视为分隔的空字符串。使用filter可以去掉那些空字符串,这样join就不会将已经加倍的反斜杠加倍。不幸的是,如果你有3个或更多,它们会减少为双反斜杠,但我不认为这会在windows路径表达式中对你造成伤害。

您可以使用

os.path.abspath(path_with_backlash)

它返回带有 的路径

使用:

string.replace(r"C:UsersJoshDesktop20130216", "\", "\")

转义字符。

最新更新