由于撇号而导致Python中的字符串定义错误

时间:2017-05-25 05:45:41

标签: python string apostrophe

在codefight中,有一个问题:

  

哪个给定的字符串定义不正确?

     
      
  1. s ='abacaba'

  2.   
  3. s =“abacaba”

  4.   
  5. s =''abacaba''

  6.   
  7. s =“”abacaba“”

  8.   
  9. s ='''abacaba'''

  10.   
  11. s =“”“abacaba”“”

  12.   

3和4中的定义是错误的。

我的问题是,如果3和4是定义字符串的错误方法,那么类似的推理不应该是5和6错误吗?

3 个答案:

答案 0 :(得分:1)

回答你的问题

当您使用3个单引号或3个双引号时,您可以使用跨越multiple lines的字符串。这就是你为doc字符串提供它的原因。请参阅以下示例。

>>> s ="""Hello
... whats going on
... thats it"""
>>> s
'Hello\nwhats going on\nthats it'
>>>

但是当使用2个单引号('')或使用2个双引号("")时,如果您需要将字符串封装在它们的引号中,它应该如下所示。

"'Hello'" or '\'Hello\''
'"Hello'" or "\"Hello\""

如果你不这样做,python口译人员期望得到“你好”的价值。而不是把它当作一个字符串。

答案 1 :(得分:0)

3和4是错误的,因为''是空字符串,abacaba将被视为变量,因此您需要将其写为'' + str(abacaba) + '',这将连接您的字符串,并且您必须在使用前指定abacaba的值。

现在,当您使用"""abacaba""" python时,您的答案将找到三个不同的字符串"""abacaba""",您的结果将为'abacaba'。 发生这种情况是因为您需要+符号来连接存储在变量中的字符串,但对于"abc""xyz"之类的字符串,如果您编写s="abc" "xyz"s="abc""xyz",您将获得结果'abcxyz'

以下是几个例子:

>>> s="abc" "xyz"
>>> s
'abcxyz'
>>> s="1""abc""1"
>>> s
'1abc1'
>>> s="1"  "abc"  "1"
>>> s
'1abc1'
>>> s="1"abc"1"
SyntaxError: invalid syntax
>>> abc="2"
>>> s="1"abc"1"
SyntaxError: invalid syntax
>>> s="1"+abc+"1"
>>> s
'121'
>>> s=r"""abc"""  # raw string which will treat all content/special character between "" as your string
>>> s
'abc'

答案 2 :(得分:-1)

三重引号最常用于python中的方法描述。这些方法描述称为docstrings,表示为多行字符串文字""" """

以下是python中的示例。

def testdocstring():
    """
    this is a test docstring method
    :return: None
    """
    pass

print testdocstring.__doc__

print语句的输出将为:

  this is a test docstring method
  :return: None

编辑:正如@Varad和@abccd所提到的,它也用于多行字符串文字。