2015-07-03 299 views
0

我試圖逃離反斜槓,而是試圖瞭解這樣做Python的轉義反斜線

foo = r'C:\Users\test.doc' 

正道上面正常工作

然而,當我想逃避存放的路徑在一個變量

例如:

parser.add_argument('-s', '--source', type = str, help = 'Source file path') 

現在,如何在逃跑的價值 - args.source

+0

我認爲從外部來源的字符是字面上的。 – TigerhawkT3

+0

是的,但我想逃避它。或者我得到一個錯誤沒有這樣的文件或目錄:'C:\\ Users \\ test.doc – user4723845

+0

這是追溯看起來如何? –

回答

-1

所以在Python中有幾個轉義序列需要注意,它們主要是這些。

enter image description here

因此,當該文件位置的字符串由add_argument方法可能不能被解釋爲一個原始字符串,就像你宣佈和將沒有辦法逃脫外的反斜槓解析宣言。

你可以做的是將其保留爲一個常規字符串(從字符串中除去'r'前綴)並在任何地方使用轉義字符作爲反斜線,否則可能與另一個轉義字符發生衝突案例\ t)。這可能工作,因爲該方法可能正確評估字符串。

嘗試像這樣聲明你的字符串。

foo = "C:\Users\\test.doc" 

希望這有助於解決您的問題!

編輯:

爲了應對處理你也許可以做類似下面的動態文件的位置!

def clean(s): 
    s = s.replace("\t", "\\t") 
    s = s.replace("\n", "\\n") 
    return s 

直到你已經覆蓋了你可能需要使用的位置的所有基地!此解決方案可能更適合您的需求。這很有趣,我從來沒有想過這樣做。希望這有助於!

+0

我得到的路徑是動態的,所以我需要某種函數來處理這個問題。 – user4723845