Python - 如果用户在输入中输入\ n,并且打印了varible,则\ n将生成一个新行

时间:2018-01-06 19:42:45

标签: python

例如,如果我这样做:

test=input("Text: ")
print(test)

然后将test设置为hello\nhow are you?,然后调用test(),我希望它显示为:

hello
how are you?

而不是

hello\nhow are you?

这可能吗? -darth

1 个答案:

答案 0 :(得分:4)

序列\n(所以反斜杠和字母n)是escape sequencePython string literals支持此类序列。许多编程语言也支持字符串文字中的这种序列,JSON字符串也是如此。但这并没有使这些序列通用

input()只接受用户提供的输入,并返回该输入。没有更多,没有更少,没有特别的意义,这是设计的。因此,如果您想为一系列与其正常含义不同的字符赋予意义,那么您必须自己编写代码。

你可以使用str.replace();如果你想要的只是\n是换行符,那么这是最简单的:

test = input("Text: ")
test = test.replace('\\n', '\n')

因为你必须定义字符串文字以告诉str.replace()该怎么做,你现在确实支持转义序列,并且必须告诉Python 不要创建换行符,但是文字\后跟n字符,用实际的换行符替换该序列。

如果您想支持Python字符串文字支持的所有转义序列,那么可以通过unicode_escape codec使用codecs.decode() function

import codecs

test = input("Text: ")
test = codecs.decode(test, 'unicode_escape')

然后解释Python字符串文字语法支持的所有可能的转义序列,包括\n\t\b\uhhhh等。