理解Python的反斜杠转义字符

3
我的脚本会通过将文件路径与文件类型后缀拼接在一起来创建要导出的文件。例如,
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'的意义是什么呢?虽然当我导出时,我的文件被保存在正确的位置,但我不喜欢print命令在Test后给我两个反斜杠(例如C:\Test\3.jpg),而只给我一个反斜杠。

请问如何使我的文件路径只有一个反斜杠呢?


3
为什么不用正斜杠? - Kos
3个回答

6
不要试图使用字符串操作来构建文件路径。Python有os.path模块来完成这个任务:
import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")

这将确保路径正确构建。

(另外,不要使用整数int作为变量名,因为它会覆盖内置的int()函数。)


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

来源

因此,它不能像那样工作。如果要使用原始字符串,但带有尾随反斜杠,则需要在之后单独添加:

>>> 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'

0

首先,不要将整数称为int,因为它会遮盖内置的int()函数。
使用os.path是非常聪明的方法

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

或者您必须使用字符串操作来构建文件路径:

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

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