16

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

我知道原始字符串。'pictures\12761_1.jpg'例如,如果我从 xml 文件中获取值,如何将 str 转换为 raw ?

4

3 回答 3

25

您可以将 string.replace()方法与 rawstring 一起使用。

蟒蛇2:

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

蟒蛇 3:

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

这里有两点需要注意:

  • 首先通过将 r 放在字符串之前,将文本作为拉绳读取。如果你不提供,这里会有一个 Unicode 错误。
  • 而且在 replace 方法的第一个参数中给出了两个反斜杠。原因是反斜杠是与其他字母一起用作转义序列的文字。现在您可能想知道什么是转义序列。因此,转义序列是在字符串文字或字符中使用时不代表自身的字符序列。它由两个或多个以反斜杠开头的字符组成。像 '\n' 代表一个换行符,同样有很多。因此,要转义反斜杠本身(通常是转义序列的开始),我们使用另一个反斜杠来转义它。

我知道第二部分有点混乱,但我希望它有意义。

于 2011-06-08T07:48:26.303 回答
0

您还可以使用拆分/加入:

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

编辑:

您可能使用的另一种方法是在检索数据期间准备数据(例如,想法是在分配给变量之前更新字符串) - 例如:

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

>>>'pictures/12761_1.jpg\n'
于 2011-06-08T07:51:32.477 回答
0

我知道这不是您确切要求的,但我认为这会更好。最好只使用目录的名称并使用 os.path.join(directory,filename)

"os.path.join(path, *paths) 智能加入一个或多个路径组件。返回值是 path 和 *paths 的任何成员的串联,每个非空部分后面只有一个目录分隔符 (os.sep)除了最后一个,这意味着如果最后一部分为空,结果只会以分隔符结尾。如果一个组件是绝对路径,则所有先前的组件都被丢弃,并从绝对路径组件继续连接"

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

于 2020-01-16T09:51:54.770 回答