为何七个双引号组成的Python字面量字符串会触发语法错误?
Python strip() 参数的字符串字面量语法异常问题
处理客户端输入时,我们常使用strip()方法移除字符串首尾的指定字符集合——只需把目标字符传入参数即可。
举个例子:
".yes' ".strip(". '")
这段代码会返回结果'yes',符合预期。
但当需要移除的字符集合是' ".时,符号顺序会影响语法正确性:
".yes' ".strip(""" ."'""")可以正常运行- 但如果把
"放在末尾,写成包含七个双引号的字面量""""""""时,会触发语法错误:SyntaxError: unterminated string literal (detected at line 1)
按三引号字符串的定义逻辑,七个双引号的字面量本应等同于'"',为什么会报错?
查阅Python文档可知:
- 三引号字符串的定义为
'''三个单引号'''或"""三个双引号""" - 语言参考中说明
longstring即"""longstringitem""",且longstringitem可以是单个字符
这就引出疑问:到底是文档的定义需要修正,还是解释器的语法处理存在问题?
我已在CPython的官方issue中提交了该问题。
内容的提问来源于stack exchange,提问作者Vasyl Kolomiets
相关产品推荐
相关产品推荐

