【问题标题】:So what is the story with 4 quotes?那么,有 4 个引号的故事是什么?
【发布时间】:2013-11-25 02:24:04
【问题描述】:

我正在 python shell 中使用 type() 运算符进行试验。我注意到:

type('''' string '''') 

返回一个扫描字符串时出错的错误

还是:

type(''''' string ''''')

工作正常并响应找到一个字符串。

发生了什么事?这是否与 type('''' string '''') 被解释为 type("" "" string "" "") 并因此空字符串和未定义变量的无意义连接有关?

【问题讨论】:

  • 我很确定这是另一个问题的重复,但我找不到它,我认为它只有一个 Martijn Pieters 的答案,他的答案比上次更好,所以……我放弃搜索了。

标签: python string python-2.7 quotes


【解决方案1】:

你用 3 个引号结束一个字符串,加上 一个 额外。这有效:

>>> ''''string'''
"'string"

换句话说,Python 看到 3 个引号,然后字符串在 next 3 个引号处结束。之后的任何内容都不再是 字符串的一部分。

Python 还连接一个接一个放置的字符串:

>>> 'foo' 'bar'
'foobar'

所以'''''string''''' 真的意味着'''''string''' + '';第一个字符串在开始的 3 个引号之后开始,直到找到 3 个结束引号。这三个右引号之后是另外两个引号,形成一个单独但空的字符串:

>>> '''''string'''
"''string"
>>> '''''string'''''
"''string"
>>> '''''string'''' - extra extra! -'
"''string - extra extra! -"

故事的寓意:Python 仅支持三引号或单引号。任何偏离这一点的事情都只会导致痛苦。

【讨论】:

  • 如何表达“'string'”?
  • ^由一个“旁边的一个”组成
  • @frogeyedpeas:使用转义符 ("\"'string'\"") 或三个单引号 ('''"'string'"''')。
【解决方案2】:

鉴于以下情况,您的假设似乎是正确的:

a = '''' string ''''
  File "<stdin>", line 1
    a = '''' string ''''
                       ^
SyntaxError: EOL while scanning string literal

正如 Martijn 在他的回答中所说,Python 正在尝试连接相邻的字符串,并在找不到结尾 ' 时失败。

【讨论】:

    猜你喜欢
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2015-02-23
    相关资源
    最近更新 更多