在Python中使用replace方法

时间:2014-12-28 18:41:02

标签: python regex string replace escaping

如何忽略字符串中的所有转义字符?

Fx: \n \t %s

所以,如果我有一个字符串:

text = "Hello \n My Name is \t John"

现在,如果我打印字符串,输出将与实际字符串不同:

Hello
 My Name is      John

如何打印'实际字符串'像这样:

Hello \n My Name is \t John

这是一个不起作用的例子:

text = "Hello \n My Name is \t John"
text.replace('\n', '\\n').replace('\t', '\\t')
print text

这不起作用! 没有区别

我已经查看了一些可以删除它们的主题,但我不希望这样。我怎么忽略它们?所以我们可以看到实际的字符串?

3 个答案:

答案 0 :(得分:1)

在打印之前,您可以在字符串上调用repr

>>> text = "Hello \n My Name is \t John"
>>> print repr(text)
'Hello \n My Name is \t John'
>>> print repr(text)[1:-1]  # [1:-1] will get rid of the ' on each end
Hello \n My Name is \t John
>>>

答案 1 :(得分:1)

您的方法不起作用,因为字符串是不可变的。您需要将text.replace(...)重新分配给文本才能使其正常运行。

>>> text = text.replace('\n', '\\n').replace('\t', '\\t')
>>> print text
Hello \n My Name is \t John

答案 2 :(得分:0)

很少但非常有用的方法,使用 r

a=r"Hey\nGuys\tsup?"
print (a)

输出:

>>> 
Hey\nGuys\tsup?
>>> 

所以,对于你的问题:

text =r"Hello\nMy Name is\t John"
text = text.replace(r'\n', r'\\n').replace(r'\t', r'\\t')
print (text)

输出:

>>> 
Hello\\nMy Name is\\t John
>>> 

您必须定义文本变量AGAIN,因为字符串是不可变的。