如果以前有人問過這個問題,我的確在搜索它,但是所有的匹配似乎都是關於python原始字符串,而不是關於argparse。Python Argparse:原始字符串輸入
無論如何,我有一個代碼,用戶在一個字符串中輸入,然後處理這個字符串。但是,我有一個問題,因爲我希望我的代碼能夠區分\n
和\\n
,以便用戶可以控制它們是否出現換行符或分別在輸出中顯示\n
。
這本身很簡單,我可以通過邏輯來檢查字符串等等。然而,argparse似乎並沒有保持原始輸入字符串。所以如果我要寫:Here is a list:\nItem 1
它被解析爲Here is a list:\\nItem 1
。因爲如果我在輸入字符串中將\n
替換爲\\n
,則會分析完全相同的內容,因此無法區分這兩者。
我可以包括一個bodge(例如,我可以讓用戶輸入$\n
爲\n
出現在輸出中,或者只是\n
換行符)。但是這很混亂,並且使代碼的使用複雜化。
有沒有辦法確保被argparse解析的字符串是原始的? (也就是說,如果我進入\n
它解析\n
而不是\\n
)
再次,對不起,如果這之前已經問過,但我找不到在試圖尋找一個答案一個小時的回答後,我出於想法(酒吧酒吧)。提前爲所有幫助而歡呼。
示例代碼(對不起,如果這也不行,不知道如何最好地爲argparse做示例代碼!):
import argparse
parser = argparse.ArgumentParser(description = 'Test.')
parser.add_argument('text', action = 'store', type = str, help = 'The text to parse.')
args = parser.parse_args()
print(repr(args.text))
您需要分離Python處理的內容和shell處理的內容。 'argparse'只能解析傳遞給Python進程的命令行參數,但它不能修改shell如何處理這些參數。現在可能或可能發生一些逃跑,例如, 'python -c「import sys; print sys.argv」My \ nMagic \ nString'會在Windows的'cmd.exe'中輸出不同的值,在'bash'中輸出不同的值,即使我們在提示符中鍵入了相同的字符。 –
可能的重複[如何在python中不轉義反斜線轉義的字符串?](http://stackoverflow.com/questions/1885181/how-do-i-un-escape-a-backslash-escaped-string -in-python) – zondo
答案與argparse無關。 – zondo