2014-04-01 74 views
3

我是python的新手,所以如果聽起來很簡單,請原諒我。我想加入一些變量來產生路徑。像這樣:在python上連接反斜槓

AAAABBBBCCCC\2\2014_04\2014_04_01.csv 

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

如何連接此?我用單引號括住下劃線或反斜槓,但是stackoverflow忽略/修改它們。

+0

似乎有很多方法可以解決這個問題,但我最終使用了來自於小二的修改後的消解:r'{} \ {}'。format('hi','bye')謝謝大家! –

回答

2

反斜線常用來逃避特殊字符串。例如:

>>> print "hi\nbye" 
hi 
bye 

告訴Python的不想要計算斜線特殊通常作爲使用「原始」的字符串,它可以通過與字母「R」的字符串前面被寫爲一個string literal一樣容易。

>>> 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即可。

6

您應該使用os.path.join來構建路徑。

如:

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

,或者如果你堅持要用反斜槓,你需要轉義:作爲,所以'\\'

3

通常情況下,你會反斜線:

'\\' 

使用os.path.join()加入目錄和文件名元素,其餘部分使用字符串格式:

os.path.join(Id, TypeOfMachine, '{}_{}'.format(year, month), 
      '{}_{}_{}.csv'.format(year, month, day)) 

並讓Python負責爲您的平臺使用正確的目錄分隔符。這有一個好處,你的代碼變得可移植;它也可以在Windows以外的操作系統上工作。

通過使用字符串格式,您還可以處理任何非字符串參數;例如,如果yearmonthday是整數。

+0

+1'format'在這裏負責轉換你的數據類型。例如,你不能在'int's上使用'os.path.join'。 – quornian

1

不導入os.path中模塊你可以簡單地做:

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