代码之家  ›  专栏  ›  技术社区  ›  DaeYoung

在Python str.replace中,以相同的方式处理双引号和单引号?

  •  -2
  • DaeYoung  · 技术社区  · 6 年前

    容忍我,我对蟒蛇还不熟悉。我编写了一个简单的脚本来解析一个长字符串,该字符串包含用单引号包装的多个子字符串。我用过 str.replace 将单引号替换为空字符串。但是输入字符串改为双引号。我偶然地用新的输入运行了脚本,出乎意料的是,它仍然将所有双引号替换为空字符串。

    我想我在Python的某个地方读到过,双引号和单引号是一样的。这是正确的说法吗?

    更新:

    我的道歉。我一定把别人和这个问题混淆了,包括我自己。我运行了快速测试脚本来验证我从原始脚本看到的输出,但是我没有看到相同的输出。我试图替换包含双引号的输入字符串(例如。 str="foo \"abc\" \"efg\"" 具有 str.replace("'","") 但没有。我不得不重新检查原始脚本和它试图解析的输入字符串。谢谢你花时间研究这条线。

    我刚刚验证了原始脚本的一部分(相当长,有点复杂,我说我没有在我的问题上下文中说出关于这个脚本的全部真相,对此我很抱歉)误导了我相信(一段时间)Python str.替换 以同样的方式对待双引号和单引号,这是错误的假设。

    2 回复  |  直到 6 年前
        1
  •  2
  •   blue_note    6 年前

    在python中,它们的处理方式是相同的。但这意味着, 就语言而言 ,可以使用单引号或双引号。然而, 他们不是同一个角色 . 如果你有。

    text = "I said 'hello' to him"
    

    外部双引号只是对字符串进行分隔,而内部单引号是字符串本身的一部分。所以,如果你跑

    text.replace("'", "")
    

    单引号将被替换。但如果你这样做了

    text.replace('"', "")
    

    不会发生任何事情,因为字符串不包含双引号

        2
  •  1
  •   Green Cloak Guy    6 年前

    单引号和双引号的处理方式相同 在你的代码中 . 换句话说,

    'Hello' == "Hello"
    

    以及你是否使用 ' " 没什么区别。

    但是,假设你有一个字符串 包含 人物 ' " :

    long_string = "So I said 'and what do you mean by that?' and she responded 'I dunno' and ..."
    

    这是一个包含 ' 性格。注意我用了 " 作为在代码中指定此字符串的字符;因此,我可以使用 ' 字符串中的字符,而不必转义。它的工作原理与此相反:

    >>> print( '"' )   # "
    >>> print( "'" )   # '
    

    如果要在双引号字符串中使用双引号字符,则必须对其进行转义:

    >>> print( "\"" )  # "
    >>> print( '\'' )  # '
    

    现在,回到你的问题上来。你的绳子像 long_string ,其中包含单引号字符。要删除它们,只需执行以下操作

    string_without_quotes = long_string.replace( "'", "" ) # or '\''