在Python中如何将反斜杠连接起来

12

我刚接触 Python,如果这个问题听起来很简单,请原谅。我想要连接几个变量以生成一个路径,就像这样:

AAAABBBBCCCC\2\2014_04\2014_04_01.csv

Id + '\' + TypeOfMachine + '\' + year + '_' + month + '\' + year + '_' + month + '_' + day + '.csv'
我该如何拼接这个字符串?我已经在下划线或反斜杠周围加了单引号,但stackoverflow会忽略/修改它们。

我该如何拼接这个字符串?我在下划线或反斜杠周围加了单引号,但stackoverflow会忽略/修改它们。


似乎有多种方法可以解决这个问题,但我最终使用了kojiro的修改建议:r'{}{}'.format('hi', 'bye')。感谢大家! - Vini.g.fer
6个回答

16

反斜杠通常用于转义特殊字符。例如:

>>> print "hi\nbye"
hi
bye

告诉Python不将反斜杠视为特殊字符通常很容易,只需使用“原始”字符串即可,该字符串可以通过在字符串前面加上字母'r'来编写字符串文字

>>> print r"hi\nbye"
hi\nbye

即使是未经处理的字符串,也不能以奇数个反斜杠结尾。这使得字符串连接变得困难。

>>> print "hi" + r"\" + "bye"
File "<stdin>", line 1
print "hi" + r"\" + "bye"
                       ^
SyntaxError: invalid syntax

有几种方法可以解决这个问题。最简单的方法是使用字符串格式化:

>>> print r'{}\{}'.format('hi', 'bye')
hi\bye

另一种方法是在常规字符串中使用双反斜杠,用第一个反斜杠转义第二个反斜杠:

>>> print 'hi' + '\\' + 'bye'
hi\bye

但前提是你必须面对一个合法的需要使用反斜杠的情况。如果你只是试图构建Windows路径表达式,那么只需使用os.path.join即可。


12

您应该使用os.path.join来构建路径。

例如:

import os
path = os.path.join(Id, TypeOfMachine, year + '_' + month, year + '_' + month + '_' + day + '.csv')

或者如果你坚持使用反斜杆,你需要对它们进行转义:即 '\\'


5

通常情况下,您需要双倍反斜杠:

'\\'

使用os.path.join()函数来连接目录和文件名,使用字符串格式化来实现其余部分:
os.path.join(Id, TypeOfMachine, '{}_{}'.format(year, month), 
             '{}_{}_{}.csv'.format(year, month, day))

让Python为您处理平台的正确目录分隔符。这样做的好处是使您的代码具有可移植性;它也可以在Windows以外的操作系统上运行。

通过使用字符串格式化,您还可以处理任何非字符串参数;例如,如果year, monthday是整数。


这里的 +1 format 会负责转换你的数据类型。例如,你不能在 int 上使用 os.path.join - quornian

2
你可以通过其ASCII码简单地调用字符。(我使用的是Python 3.7)。
例如:
在这种情况下,ASCII码为92,你可以使用Python的chr()函数来调用该字符。

enter image description here

这个网站上,您可以找到更多可打印字符的ASCII代码列表。
上面使用的代码:
delimiter = chr(92)

FileName = 'Id' + delimiter + 'TypeOfMachine' + delimiter + 'year' + '_' + 'month' + delimiter + 'year' + '_' + 'month' + '_' + 'day' + '.csv'

print(FileName)

希望有所帮助。

1

如果不导入os.path模块,你可以简单地这样做:

 my_path = '\\'.join([Id,TypeOfMachine, year + '_' + month, year + '_' + month + '_' + day + '.csv'])

0

你也可以使用普通字符串,例如:

Id + '/' + TypeOfMachine + '/' + year + '_' + month + '/' + year + '_' + month + '_' + day + '.csv'

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