2014-02-10 343 views
1

我正嘗試從python向終端提供字符串,但無法正確格式化字符串。字符串內的報價

c="awk -F\"\t\" '{print$5\" \"$6\" \"$7}' file.txt | sort | uniq -c" 

,當你在shell看看這個你:

>>> f="awk -F\"\t\" '{print$5\" \"$6\" \"$7}' file.txt | sort | uniq -c" 
>>> f 
'awk -F"\t" \'{print$5" "$6" "$7}\' file.txt | sort | uniq -c' 

爲什麼單引號之前有沒有\的?我如何擺脫它們? 我已經試過「」「串」「」和「」「串」「」

在以前的節目,我有這樣的:

>>> t="awk '{print $4}' file.txt | sort | uniq" 
>>> t 
"awk '{print $4}' file.txt | sort | uniq" 

我不知道有什麼區別

+2

嘗試輸入'print(f)'而不是'f'。 – 2rs2ts

+0

它打印的很好,但我在subprocess.Popen函數中使用它,我不認爲字符串的打印形式是傳遞給終端的東西 – user3266890

+0

你在''repr'(表示) ',如您注意到的那樣,它顯示爲單引號字符串,所以它必須轉義其他單引號。打印時不包含在引號中,因爲您沒有看到它的「repr」。使用'subprocess.Popen'時可以進行類似的測試。爲什麼不把它傳遞給'echo'就可以了? – 2rs2ts

回答

1

解決方案是使用原始的三重引號字符串。

f = r"""awk -F"\t" '{print$5" "$6" "$7}' file.txt | sort | uniq -c""" 
相關問題