【问题标题】:how to replace back slash character with empty string in python如何在python中用空字符串替换反斜杠字符
【发布时间】:2012-09-19 00:59:21
【问题描述】:

我正在尝试用以下代码替换字符串中的反斜杠“\”

string = "<P style='TEXT-INDENT'>\B7 </P>"

result = string.replace("\",'')

结果:

------------------------------------------------------------
   File "<ipython console>", line 1
     result = string.replace("\",'')
                                     ^
SyntaxError: EOL while scanning string literal

这里我不需要反斜杠,因为实际上我正在解析一个带有上述格式标签的 xml 文件,所以如果有反斜杠,它会在解析过程中显示 invalid token

我能知道如何在python中用空字符串替换反斜杠

【问题讨论】:

    标签: python replace


    【解决方案1】:

    错误是因为您没有在'\' 中添加转义字符,您应该为backslash (\) 提供\\

    In [147]: foo = "a\c\d" # example string with backslashes
    
    In [148]: foo 
    Out[148]: 'a\\c\\d'
    
    In [149]: foo.replace('\\', " ")
    Out[149]: 'a c d'
    
    In [150]: foo.replace('\\', "")
    Out[150]: 'acd'
    

    【讨论】:

    • 请不要使用 Python 类型名称,如 str 用于变量。这很令人困惑,并可能导致错误。
    【解决方案2】:
    result = string.replace("\\","")
    

    【讨论】:

    • 我用过这个,似乎原始字符串有一些错误。 ibb.co/f84Z4XP
    • @matheburg 奇怪但鲜为人知的事实 - 您不能用反斜杠结束 r 字符串。解析的实现方式会导致缺少结束引号。
    • @MarkRansom 非常感谢!要点:我不会发布未经测试的代码。 ;)
    • @matheburg,澄清一下,result = string.replace(r"\", "") 不起作用。您能否删除或更新您的评论以防止进一步混淆?
    • @Ike:当然。我不知道为什么我在马克的评论后忘记了这一点。
    【解决方案3】:
    >>> string = "<P style='TEXT-INDENT'>\B7 </P>"
    >>> result = string.replace("\\",'')
    >>> result
    "<P style='TEXT-INDENT'>B7 </P>"
    

    【讨论】:

      【解决方案4】:

      只是给你一个解释:反斜杠\在许多语言中都有特殊的含义。在 Python 中,取自 doc:

      反斜杠 () 字符用于转义具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。

      因此,为了替换字符串中的\,您需要使用"\\" 转义反斜杠本身

      >>> "this is a \ I want to replace".replace("\\", "?")
      'this is a ? I want to replace'
      

      【讨论】:

        【解决方案5】:

        你需要用一个额外的反斜杠转义'\'才能与\进行实际比较。所以你应该使用'\'..

        请参阅Python Documentation - section 2.4 以了解 Python 中的所有 escape sequences.. 以及您应该如何处理它们..

        【讨论】:

          【解决方案6】:

          如果string='abcd\nop.png'添加解决方案

          result = string.replace("\\","")
          

          上面的这个不起作用,因为它会给出result='abcd\nop.png'

          这里如果你看到\n 是一个换行符。所以我们必须替换原始字符串中的反斜杠字符(因为不会检测到'\n')

          string.encode('unicode_escape')
          result = string.replace("\\", "")
          #result=abcdnop.png
          

          【讨论】:

            【解决方案7】:
            import re
            
            new_string = re.sub(r"\\\\",r" ",old_string)
            

            【讨论】:

              【解决方案8】:

              现在是 2020 年 8 月。
              Python 3.8.1
              熊猫 1.1.0
              此时我同时使用了双 \ 反斜杠和 r。

              df.replace([r'\\'], [''], regex=True, inplace=True)
              

              干杯。

              【讨论】:

                猜你喜欢
                • 2021-03-28
                • 1970-01-01
                • 2011-02-22
                • 2011-08-01
                • 1970-01-01
                • 2016-01-12
                • 2018-02-27
                • 2021-10-08
                相关资源
                最近更新 更多