如何在不修改原始字符串的情况下在python中重新引入特殊符号的含义?

时间:2017-07-22 10:10:33

标签: python python-3.x

此代码:

    a = "Hello,\\nWorld!"
    print(a)

打印:

    Hello,\nWorld!

果然。 但是如何重新引入换行符号和打印的特殊性:

    Hello,
    World!

不对原始字符串进行任何更改。喜欢:

    a = "Hello,\nWorld!"

我问这个是因为某个函数(我无法控制)返回一个字符串,如:

    Hello,\\nWorld!

我想将其打印到屏幕上(格式化为

    Hello,
    World!

2 个答案:

答案 0 :(得分:1)

您可以使用string_escape解码字符串:

a = "Hello,\\nWorld!"
print(a)
# Hello,\nWorld!
print(a.decode("string_escape"))
# Hello,
# World!

更新 - 由于您没有立即指定版本,因此上述内容适用于Python 2.x,因为其str对象已经是bytes所在的对象Python 3.x.对于Python 3.x字符串,您必须先将它们编码为bytes,然后使用unicode_escape对其进行解码,或让codecs模块为您执行此操作:

import codecs

a = "Hello,\\nWorld!"
print(a)
# Hello,\nWorld!
print(codecs.getdecoder('unicode_escape')(a)[0])
# Hello,
# World!

答案 1 :(得分:-1)

这似乎更简单。

s="Hello,\\nWorld!"

def spl(s):
    return s.replace('\\n','\n')

print(spl(s))
print(s)

只需创建一个返回替换字符串的函数。然后打印出来。

输出:

Hello,
World!
Hello,\nWorld!

此外,您不必更改原始字符串。