【问题标题】:Single quoted string vs. double quoted string单引号字符串与双引号字符串
【发布时间】:2017-09-01 11:30:09
【问题描述】:

为什么单引号字符串需要转义字符,而双引号字符串不需要?

a = 'hello how\'s it going'
a1 = 'hello how's it going'
b =  "hello how's it going"

assert(a==b) # Passes

assert(a1==b) # Errors

错误信息:

文件“string.py”,第 1 行 a = '你好,最近怎么样' ^ SyntaxError:无效的语法

【问题讨论】:

  • 它应该如何知道“how's”中的单引号是为了终止字符串,还是作为文字中的字符?这是模棱两可的。
  • 反之亦然,双引号字符串中不能有未转义的双引号。例如'I said "hello" to her.' 有效,但"I said "hello" to her" 无效。
  • 这就解释了!谢谢

标签: python string escaping


【解决方案1】:

在字符串周围使用'" 将其标记为字符串文字都没有关系。但是你不能在字符串文字中使用该字符而不使用它前面的 \ 转义它 - 否则 Python 会将其解释为字符串的结尾。

例如," 中的 " 也需要转义:

a = "And he said: \"What a nice day\"."

【讨论】:

  • 感谢澄清,想知道为什么我们没有统一的方式在python中定义字符串;而不是与单引号/双引号混淆
  • 因为它可以在不转义的情况下使用字符串中的另一个。因此,如果您的字符串中有",最好使用' 作为分隔符,反之亦然。很少有在字符串中同时需要'" 的情况,如果发生这种情况,您需要转义其中一个。
  • @counter98:统一的方式是三引号:""" Write anything you want here : "'"''"'"'"''""'"' """
  • @EricDuminil 您的意思是“除""" 之外的任何内容”(或''',如果它是''' 分隔的多行字符串)。
  • @MSeifert: :D 我想这是信息论中的一个固有问题。您需要一个分隔符,并且它不能在字符串中以未转义的形式出现。
【解决方案2】:

因为单引号关闭了字符串。例如

'Broken' single quote string'
"Broken" double quote string"

如果您需要在字符串中使用单引号,请使用双引号,反之亦然

"valid 'single' quote in a string"
'valid "double" quote in a string'

【讨论】:

    【解决方案3】:

    您可以使用单引号或双引号,但如果您想在字符串中使用它们而不转义它们,则开始和结束符号应该与在字符串中使用的不同。

    例如,你可以这样做:

    a = "hello how's it going"
    

    或者:

    a = 'hello my "friend"'
    

    【讨论】:

      【解决方案4】:

      单引号

      当您以单引号 ' 开始字符串时,它会搜索下一个单引号 ' 以结束字符串。当它遇到第二个单引号 ' 时,它会以该引号结束字符串,并且超出第二个引号它不接受任何字符串作为字符串。所以你需要把带反斜杠的引号作为转义字符。

      双引号

      您可能已经猜到了,在这种情况下,字符串也以双引号 " 开头和结尾。在第一个双引号和第二个双引号之间,它接受除双引号外的任何字符串(原因与单引号相同)。

      希望这能阐明您对字符串的概念:)

      【讨论】:

        【解决方案5】:

        两种类型(单引号和双引号)之间的选择取决于程序员的选择。通常,双引号用于字符串表示,单引号用于正则表达式、字典键或 SQL。因此,单引号和双引号都在 python 中描述字符串,但有时我们需要使用一种类型而不是另一种类型。

        Read more

        【讨论】:

          猜你喜欢
          • 2010-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-26
          • 2011-04-12
          • 1970-01-01
          相关资源
          最近更新 更多