如何在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