python 将反斜杠替换为斜杠

22 投票
3 回答
93459 浏览
提问于 2025-04-16 19:09

我该怎么处理字符串中的反斜杠,比如这个:'pictures\12761_1.jpg'

我知道有原始字符串的概念。如果我从一个XML文件中获取这个值'pictures\12761_1.jpg',我该怎么把它转换成原始字符串呢?

3 个回答

0

我知道这不是你问的具体内容,但我觉得这样做会更好。直接写出你的文件夹名字,然后用 os.path.join(directory, filename) 来组合它们会更简单。

“os.path.join(path, *paths) 是一个函数,可以智能地把一个或多个路径组合在一起。返回的结果是把路径和 *paths 中的每个部分连接起来,中间用一个目录分隔符(os.sep)隔开,除了最后一个部分。如果最后一个部分是空的,结果才会以分隔符结尾。如果某个部分是绝对路径,那么之前的部分都会被丢掉,连接会从这个绝对路径开始。”

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

0

你也可以使用分割和连接的方法:

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

编辑:

你还可以在获取数据的时候就准备好数据(比如说,想法是在把字符串赋值给变量之前先更新它)——例如:

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

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

你可以使用字符串的 .replace() 方法,配合原始字符串来使用。

Python 2:

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

Python 3:

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

这里有两点需要注意:

  • 首先,要把文本当作原始字符串读取,需要在字符串前面加个 r。如果不加,就会出现 Unicode 错误。
  • 还有,在 replace 方法的第一个参数里用了两个反斜杠。这样做的原因是,反斜杠在和其他字母一起使用时,通常是用来表示转义序列。你可能会问,什么是转义序列呢?转义序列是一串字符,当它在字符串或字符中使用时,不会代表它自己。它通常由两个或更多字符组成,并且以反斜杠开头。例如,'\n' 代表换行,类似的还有很多。所以为了表示反斜杠本身(因为它通常是转义序列的开头),我们需要再加一个反斜杠来转义它。

我知道第二部分有点让人困惑,但希望你能理解其中的一些意思。

撰写回答