2017-02-15 39 views
1

如果我有一個字符串如何是一個「 B」字存儲在Python中的字符串「?

dummy_path = "this is a dummy path\basic" 

\b人物當然是一個退格,所以這得到印刷(通過文件系統調用處理)作爲

這是一個虛擬patasic

Patasic,好聽的名字!)

我是否有機會檢測到這種情況並警告用戶(我自己)dummy_path中的\應該例如轉義或用/代替?

+2

嘗試'print(repr(dummy_path))' –

+1

編輯器/ IDE語法突出顯示通常會以非常明顯的方式標記這些類型的轉義序列。你在使用語法高亮嗎?它可以配置爲使這些結構對你更明顯嗎? –

+1

這並不完全回答你的問題,但考慮對文件路徑使用[原始字符串](https://docs.python.org/2/reference/lexical_analysis.html#string-literals)。 'r「dummy \ basic」'會將反斜槓解釋爲反斜槓。 – Kevin

回答

3

您可以看到自己:

>>> dummy_path = "this is a dummy path\basic" 
>>> dummy_path 
'this is a dummy path\x08asic' 

len功能也反映了這一點:

>>> len("a\bc") 
3 
>>> "a\bc" 
'a\x08c' 
>>> print("a\bc") 
c 

一樣的in運營商有兩個字符串作爲參數:

>>> "\b" in "a\bc" 
True 

如何它是顯示完全取決於您的輸出設備。大多數終端會一個接一個地打印每個字符。 \b不是可見的,只是將光標重新定位到左側的一個位置,此時a覆蓋先前編寫的h

值得注意的是,這是手冊頁顯示粗體文本的方式。手冊頁(屏幕呈現的*roff代碼)使用字母退格字母序列來表示字母應以粗體顯示。這個比喻來自打字機:用粗體鍵入一個字母,鍵入一次,退格鍵,然後在第一個鍵入一個字母。同樣,下劃線可以表示爲字母后退下劃線。

+0

使用'repr'(這就是我的例子,在交互式shell中顯示值,隱式演示)。 'dummy_path'是一個字符串值,而'repr(dummy_path)'返回一個*表示字符串值的字符串,具體來說,用另外的不可打印字符替換爲'\ x ??'表示。 – chepner

+0

感謝您的回答,它只是缺少一小部分關於如何以編程方式檢測情況,我認爲它只是'如果'\ b「在dummy_path中:' – Antonio

+0

沒錯。當兩個參數都是字符串時,in運算符的行爲有點不同;如果第一個參數是第二個參數的* substring *,那麼它返回True,而不是第一個參數是第二個參數的* element *。 – chepner

相關問題