Python替换反斜杠为正斜杠

22

我如何转义字符串中的反斜杠:'pictures\12761_1.jpg'?

我知道原始字符串,但如果我从XML文件中获取'pictures\12761_1.jpg'值,我该如何将其转换为原始字符串?

3个回答

34
你可以使用字符串.replace()方法以及原始字符串(rawstring)。
Python 2:
>>> print r'pictures\12761_1.jpg'.replace("\\", "/")
pictures/12761_1.jpg

Python 3:

->

Python 3:

>>> print(r'pictures\12761_1.jpg'.replace("\\", "/"))
pictures/12761_1.jpg

这里有两个注意点:

  • 首先,通过在字符串前面加上r来将文本读取为绘制字符串。如果不这样做,这里将会出现Unicode错误。
  • 其次,replace方法的第一个参数中给出了两个反斜杠。之所以这样做是因为反斜杠是与其他字母一起使用的文字,用作转义序列。现在您可能想知道什么是转义序列。因此,转义序列是一系列字符,在字符串文字或字符中使用时不表示自己。它由以反斜杠开头的两个或多个字符组成。例如,“\n”表示换行符,类似地还有很多其他的转义序列。因此,要转义反斜杠本身(通常是转义序列的启动),我们使用另一个反斜杠进行转义。

我知道第二部分有点令人困惑,但希望它有一些意义。


0

我知道这不是你确切要求的,但我认为这样会更好。

最好只使用您的目录名称,并使用os.path.join(directory,filename)。

"os.path.join(path, *paths) 智能地连接一个或多个路径组件。返回值是path和* paths的串联,每个非空部分后面跟随一个目录分隔符(os.sep),除了最后一个之外。这意味着结果仅在最后一部分为空时才以分隔符结尾。如果组件是绝对路径,则所有先前的组件都被丢弃,并且连接从绝对路径组件继续进行"

https://docs.python.org/2/library/os.path.html


0

你也可以使用 split/join:

print "/".join(r'pictures\12761_1.jpg'.split("\\"))

编辑:

另一种方法是在检索数据时准备数据(例如,在将字符串分配给变量之前更新字符串)- 例如:

f = open('c:\\tst.txt', "r")
print f.readline().replace('\\','/')

>>>'pictures/12761_1.jpg\n'

你看到我的问题了吗?我写了r'pictures\12761_1.jpg'.split("\"),但如果我已经有一个值为'pictures\12761_1.jpg'的变量,我该如何转义反斜杠? - Vyalov V.
抱歉如果我错过了 - 但你在哪里写这个? - Artsiom Rudzenka
我已经尝试过不使用原始字符串的方式 - 例如在Python2.6控制台中输入以下内容:print "/".join('pictures\12761_1.jpg'.split("\")),它仍然以相同的方式工作。或者我错过了什么? - Artsiom Rudzenka
如果您在Python2.6控制台中尝试,您会看到'picturesW61_1.jpg'。 - Vyalov V.
@Artsiom Rudzenka:“我知道原始字符串” - 如果之前不清楚,抱歉。 - Vyalov V.
当然,你是对的 - 这是我的错,我只是使用了另一个测试字符串。目前我能想到的唯一方法是使用xml文件或任何你正在使用的其他数据源。我进行了一个小测试 - 创建了一个带有'pictures\12760_1.jpg'行的文件f,然后简单地打开此文件,并调用f.readline().replace('\','/')或"/".join(f.readline().split("\")). - Artsiom Rudzenka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接