[英]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.