簡體   English   中英

用單反斜杠替換字符串文字中的雙反斜杠

[英]Replace double backslash in string literal with single backslash

我正在嘗試打印一個包含雙反斜杠(一個用於轉義另一個反斜杠)的字符串,以便僅打印一個反斜杠。 我以為這會自動發生,但是我必須缺少一些細節。

我有這個小片段:

for path in self.tokenized:
    pdb.set_trace()
    print(self.tokenized[path])

當我使用該pdb.set_trace()調試時,我可以看到我的字符串具有雙反斜杠,然后我輸入繼續打印其余部分,並打印相同的內容。

> /home/kendall/Development/path-parser/tokenize_custom.py(82)print_tokens()
-> print(self.tokenized[path])
(Pdb) self.tokenized[path]
['c:', '\\home', '\\kendall', '\\Desktop', '\\home\\kendall\\Desktop']
(Pdb) c
['c:', '\\home', '\\kendall', '\\Desktop', '\\home\\kendall\\Desktop']

請注意,我正在編寫一個解析器,該解析器用於解析Windows文件路徑-因此是反斜杠。

這是運行程序的樣子:

kendall@kendall-XPS-8500:~/Development/path-parser$ python main.py -f c:\\home\\kendall\\Desktop

您遇到的問題是您正在print一個列表,該列表僅知道一種對其內容進行字符串化的方法: repr repr僅設計用於調試。 習慣上來說,如果可能的話(類是一個明顯的例外),它會輸出一個語法上有效的python表達式,該表達式可以直接饋入解釋器以重現原始對象-因此轉義了反斜杠。

相反,您需要遍歷每個列表,並分別打印每個字符串。

您可以使用str.join()為您執行此操作。

要獲得完全相同的輸出,請減去加倍的反斜杠,您需要執行以下操作:

print("[{0}]".format(", ".join(self.tokenized[path])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM