如何在Python中输入转义序列?
假设你制作了以下程序如何在Python中输入转义序列?,python,Python,假设你制作了以下程序 a=input("Input: ") print(a) 并尝试输入换行符,\n: Input: a\nb a\nb 输入未被视为\n字符,而是被视为两个独立的字符,\和n。如何将带有转义序列的输入视为转义序列?上述样本的结果应为 Input: a\nb a b 您可以将\\n替换为\n以获得所需的结果: a = a.replace('\\n', '\n') input不会将\作为转义字符读取 如果您只是对打印输入感兴趣,您可以使用类似的方法,它将处理其他转义字符。
a=input("Input: ")
print(a)
并尝试输入换行符,\n
:
Input: a\nb
a\nb
输入未被视为\n
字符,而是被视为两个独立的字符,\
和n
。如何将带有转义序列的输入视为转义序列?上述样本的结果应为
Input: a\nb
a
b
您可以将
\\n
替换为\n
以获得所需的结果:
a = a.replace('\\n', '\n')
input
不会将\
作为转义字符读取
如果您只是对打印输入感兴趣,您可以使用类似的方法,它将处理其他转义字符。在我看来,这不是一个理想的解决方案,而且还会与
“
发生冲突
eval('print("{}")'.format(a))
您好,您不能输入
\n
,因为这会导致输入关闭。以下是您可以尝试的内容:
replace
对字符串进行后期处理while
输入,直到得到空行input
语句按字面意思接受用户键入的输入。\
-转义约定发生在Python字符串文本中:它不是适用于存储在变量中的数据的通用约定。如果是,那么您永远不能在字符串变量中存储两个字符\
,后跟n
,因为它们将被解释为ASCII 13
您可以这样做:
import ast
import shlex
a=input("Input: ")
print(ast.literal_eval(shlex.quote(a)))
如果响应输入:
提示键入one\ntwo
,则将打印此代码
one
two
这是通过将a
的内容(即one\ntwo
)转换回一个带引号的字符串,看起来像“one\ntwo”
,然后将其作为字符串文本进行计算。这使\
-转义约定重新发挥作用
但它非常迂回。是否确实要程序的用户向其输入控制字符 a=input(“input:\n”)在输入时,使用
\t
?@Primusa按tab键,怎么样\n是特殊的,因为按回车键关闭输入如果输入字符串包含“
?@BobSmith我可以自信地说,因为这些东西是从空闲状态粘贴的:您的语法错误可能是因为您运行的是Python<3.7<代码>f-字符串是新的。但是我做了一个编辑,可以在任何版本的Python3中使用。并修复了@Primusa指出的问题。@Primusa修复了您报告的错误。@BoarGules哇,这太棒了!我希望我能投两次赞成票。@Bishop我认为对eval()
的反对意见常常被夸大,令人难以置信,但在这种情况下,真的没有讨论。
import ast
import shlex
a=input("Input: ")
print(ast.literal_eval(shlex.quote(a)))
one
two