在Python中,我試圖用雙反斜槓(「\」)替換單個反斜槓(「\」)。我有以下代碼:python用雙反斜槓替換單反斜線
directory = string.replace("C:\Users\Josh\Desktop\20130216", "\", "\\")
然而,這給出了一個錯誤消息,它不喜歡的雙反斜線。誰能幫忙?
在Python中,我試圖用雙反斜槓(「\」)替換單個反斜槓(「\」)。我有以下代碼:python用雙反斜槓替換單反斜線
directory = string.replace("C:\Users\Josh\Desktop\20130216", "\", "\\")
然而,這給出了一個錯誤消息,它不喜歡的雙反斜線。誰能幫忙?
無需使用str.replace
或string.replace
這裏,只是字符串轉換爲原始字符串:
>>> strs = r"C:\Users\Josh\Desktop\20130216"
^
|
notice the 'r'
下面是repr
版本上面的字符串的,這就是爲什麼你看到這裏\\
。 但是,實際上字符串實際上只包含'\'
而不是\\
。
>>> strs
'C:\\Users\\Josh\\Desktop\\20130216'
>>> s = r"f\o"
>>> s #repr representation
'f\\o'
>>> len(s) #length is 3, as there's only one `'\'`
3
但是,當你要打印此字符串你不會得到輸出'\\'
。
>>> print strs
C:\Users\Josh\Desktop\20130216
如果你希望字符串顯示在print
'\\'
然後用str.replace
:
>>> new_strs = strs.replace('\\','\\\\')
>>> print new_strs
C:\\Users\\Josh\\Desktop\\20130216
repr
版本現在將顯示\\\\
:
>>> new_strs
'C:\\\\Users\\\\Josh\\\\Desktop\\\\20130216'
使用轉義字符:"full\\path\\here"
,"\\"
和"\\\\"
Python的詞法分析方式,'r「\」'或'r「\\」'不會像您期望的那樣工作。 – Santa
'r'\''不正確,這會引發'EOF'錯誤,因爲您實際上是在逃避結束語。 –
現在改變了。 – alexpinho98
用途:
string.replace(r"C:\Users\Josh\Desktop\20130216", "\\", "\\")
逃離\
字符。
也許在你的情況下,語法錯誤, 您可以將該行更改爲:
directory = str(r"C:\Users\Josh\Desktop\20130216").replace('\\','\\\\')
,給你正確的輸出如下:
C:\\Users\\Josh\\Desktop\\20130216
反斜線表示特殊的轉義字符。因此,directory = path_to_directory.replace("\", "\\")
會導致Python認爲替換的第一個參數直到第二個參數的起始引號才結束,因爲它將結束引用理解爲轉義字符。
directory=path_to_directory.replace("\\","\\\\")
讓我簡單明瞭。讓我們使用python中的re模塊來轉義特殊字符。
Python腳本:
import re
s = "C:\Users\Josh\Desktop"
print s
print re.escape(s)
輸出:
C:\Users\Josh\Desktop
C:\\Users\\Josh\\Desktop
說明:
現在觀察逃脫的特殊字符是 re.escape功能給定的字符串,我們可以在每個反斜槓之前添加另一個反斜槓,最後輸出結果爲雙反斜槓,即所需的輸出。
希望這可以幫助你。
請提供一些上下文和解釋以配合您的代碼。同時檢查你的代碼的格式。 –
@JamesK對不起,我解釋一下。讓我糾正它。 –
很棒,有一個功能可以爲你做到這一點!這正是我需要的,比四重反斜槓漂亮得多。確實簡單明瞭。 – Demis
在python中\
(反斜槓)用作轉義字符。這意味着在需要插入特殊字符(例如換行符)的地方,您可以使用反斜槓和另一個字符(\n
換行)
以您的示例刺痛您會注意到,當您將"C:\Users\Josh\Desktop\20130216"
你會得到"C:\\Users\\Josh\\Desktop\x8130216"
。這是因爲\2
在python sting中有特殊含義。如果你想指定\
那麼你需要在你的字符串中輸入兩個\\
。
"C:\\Users\\Josh\\Desktop\\28130216"
另一種選擇是,通知蟒蛇您的整個刺痛絕對不能用\
由前未決的刺痛轉義字符與r
r"C:\Users\Josh\Desktop\20130216"
這是一個「生「字符串,並且在需要使用大量反斜槓(例如正則表達式響尾蛇)的情況下非常有用。
如果您仍然希望以取代單一\
與\\
你會再使用:
directory = string.replace(r"C:\Users\Josh\Desktop\20130216", "\\", "\\\\")
注意,我不是在最後兩個刺上面使用r'
。這是因爲,當您使用刺的r'
形式不能結束與一個\
Why can't Python's raw string literals end with a single backslash?
像單反斜槓要麼 –
這是不是要去那個字符串退格是[逃逸字符(http://docs.python.org/2/reference/lexical_analysis.html#grammar-token-escapeseq)。你不能單獨使用它。 – Santa
你也可以使用正斜槓;可能對你更容易。 – squiguy