理解Python的反斜杠转义字符

时间:2012-12-11 10:47:25

标签: python

我的脚本通过将文件路径与文件类型后缀连接来创建要导出的文件。例如,

int = 3
print r"C:\Test\\" + str(int) + ".jpg"

这会返回C:\Test\\3.jpg

我认为因为我在开头包含'r',所以最后我不需要双反斜杠,因为它被视为原始字符串。但以下不起作用:

int = 3
print r"C:\Test\" + str(int) + ".jpg"

...大概是因为Python在结尾引用之前看到了一个转义字符。那么'r'的重点是什么呢?虽然我的文件在导出时保存在正确的位置,但我不喜欢打印命令在测试后给我两个反斜杠(例如C:\ Test \ 3.jpg)当它只给我一个C:

如何在文件路径中获得单个反斜杠?

由于

3 个答案:

答案 0 :(得分:6)

不要尝试使用字符串操作来构建文件路径。 Python有os.path模块:

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")

这将确保正确构建路径。

(另外,不要调用整数int,因为它会影响内置的int()函数。)

答案 1 :(得分:5)

  

即使在原始字符串中,字符串引号也可以使用反斜杠进行转义,但反斜杠仍保留在字符串中;例如,r"\""是一个有效的字符串文字,由两个字符组成:反斜杠和双引号; r"\"不是有效的字符串文字(即使原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。另请注意,单行反斜杠后跟换行符被解释为字符串中的两个字符,作为行继续。

Source

所以,它不会像那样工作。如果你想使用原始字符串,但是有一个反斜杠,你需要在之后单独添加:

>>> r'C:\Test' + '\\'
'C:\\Test\\'

或者,在您的情况下,您也可以使用字符串格式来插入您的值:

>>> r'C:\Test\{0}.jpg'.format(i)
'C:\\Test\\1.jpg'

或者,您使用os.path.join来构建路径:

>>> os.path.join(r'C:\Test', str(i) +'.jpg')
'C:\\Test\\1.jpg'

答案 2 :(得分:0)

首先,不要调用整数int,因为它会影响内置的int()函数 使用os.path是一种非常聪明的方式

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")
#C:\Test\3.jpg

OR U 必须使用字符串进行操作以构建文件路径:

_prefix = 'C:\Test'
i = 3
print _prefix + '\\' + str(i) + '.jpg'
#C:\Test\3.jpg