2013-01-22 255 views
-3

我注意到這個代碼:轉義雙引號與單引號

os.system("'{0}'".format(path)) 

,看到有一個人不得不改成這樣:

os.system("\"{0}\"".format(path)) 

筆者從單一改變它想知道要加雙引號給你什麼好處?

原來這裏是犯我把它從:https://github.com/mattn/legit/commit/84bd1b1796b749a7fb40e0b734d2de29ddc9d3d9

+0

這是一個Python的問題嗎? –

+0

你想知道有什麼好處嗎?它會根據需要輸出字符串,用雙引號括起來,而不是用單引號。而且,這不是Ruby或Rails的問題,所以我刪除了他們的標籤。 –

+0

確定對不起,這是點擊相當多,但是我想知道發生了什麼 – Brandt

回答

1

沒有太多真的,但拇指使用單引號的文字作業和打印的規則。這樣你將避免打印不應該在那裏的東西。

單引號通常很有用,因爲它們是文字,並且包含您輸入的字符,例如「您好/」將實際打印您好/

不過,如果你需要像「您好/ N」,如果你把它放在單引號它會給你從字面上「嗨there/n'而雙引號會給你你需要的結果「你好」,然後打破

+0

只是爲了確保我明白他們這樣做是因爲他們說沒有動態內容? – Brandt

+0

我不是Python專家,但這是我對上述的想法。第一個帶有單引號的例子將它作爲參數的一部分傳遞給方括號{}。而雙引號將通過方括號的表示。 Ruby中的字符串插值類似。雙引號將插入「#{@ user}」,其中單引號「{@user}」不會。我希望有所幫助。 – PericlesTheo

+0

感謝您的迴應,我認爲這解釋了我所要求的最好。 – Brandt

1

在windows上,命令行參數由程序it-self解析,而不是shell或cmd.exe。大多數windows程序一般都用雙引號分析引用的字符串。 python.exe是一樣的。在unix操作系統上,命令行參數由shell解析。而且大多數shell都解析單/雙引號。當然,雙引號擴大$或者shell可以處理的東西。但是,路徑將不包含$

此更改是可以在許多操作系統上正常工作的解決方法。

enter image description here enter image description here

+0

哦,哇,不知道關於python。感謝您的意見。它真的有幫助,因爲我來自ruby的rails和更多的python編程。我也向我解釋過,單引號是這個='。我的意思是在ruby中,你不能調用像「#{happy_string}」這樣的結果,如果你試圖用單引號進行同樣的調用,它將無法在ruby中工作。 '#{} – Brandt

+0

抱歉沒有完成最後的評論。它不會在ruby'#{happy_string}'中工作,因爲它會認爲它就像它一樣。而不是用happy_string所代替的#{happy_string}。這很難解釋。 – Brandt