【问题标题】:Using replace method in Python在 Python 中使用替换方法
【发布时间】:2014-12-28 18:41:01
【问题描述】:

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

外汇: \n \t %s

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

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

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

你好 我的名字是约翰

我怎样才能像这样打印“实际字符串”:

你好\n我的名字是\t约翰

这是一个例子,它不起作用:

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

这不起作用!没有区别

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

【问题讨论】:

标签: python regex string replace escaping


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以在打印之前在字符串上调用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
    >>>
    

    【讨论】:

      【解决方案3】:

      小而有用的方法,使用 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
      >>> 
      

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

      【讨论】:

        猜你喜欢
        • 2017-11-25
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 2016-04-09
        • 2013-02-11
        • 1970-01-01
        相关资源
        最近更新 更多