[英]How do you input escape sequences in Python?
假設你做了以下程序
a=input("Input: ")
print(a)
並嘗試輸入換行符\\n
:
Input: a\nb
a\nb
輸入未被視為\\n
字符,而是被視為兩個單獨的字符\\\\
和n
。 如何將帶有轉義序列的輸入視為轉義序列? 上面樣本的結果應該是
Input: a\nb
a
b
input
語句接受用戶按字面意義輸入的輸入。 \\
轉義約定是Python字符串文字中發生的事情:它不是適用於存儲在變量中的數據的通用約定。 如果是這樣,則永遠不能在字符串變量中存儲兩個字符\\
后跟n
因為它們會被解釋為ASCII 13。
您可以通過這種方式做您想做的事情:
import ast
import shlex
a=input("Input: ")
print(ast.literal_eval(shlex.quote(a)))
如果響應Input:
提示您輸入one\\ntwo
,則將輸出此代碼
one
two
這是通過將a
one\\ntwo
的內容one\\ntwo
回一個看起來像"one\\ntwo"
帶引號的字符串,然后將其視為字符串文字來進行評估的。 這使\\
轉義約定重新起作用。
但這是非常的回旋處。 您確定要讓程序用戶輸入控制字符嗎?
您可以將\\\\n
替換為\\n
以得到所需的結果:
a = a.replace('\\n', '\n')
input
不會將\\
讀作轉義字符。
如果您只想打印輸入內容,可以使用類似這樣的東西,它將處理其他轉義字符。 在我看來,這不是理想的解決方案,而且還會遭受'
破壞。
eval('print("{}")'.format(a))
您好,您無法輸入\\n
因為它會導致輸入關閉。 您可以嘗試以下方法:
replace
對字符串進行后處理 input().replace("\\n", \n)
while
輸入空行時使用 inputs = []
while not inputs or current:
current = input()
inputs.append(current)
"\n".join(inputs)
Python 本身可以做到這一點:
text = r"Hello\nworld!"
text = text.encode().decode( "unicode_escape" )
print( text )
請注意,您的 shell ( shlex
) 轉義(如果有)可能與 Python 自己的轉義協議不同,后者用於解析用戶代碼中的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.