0

我在 Python 的交互式控制台中尝试了以下操作:

>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal

我希望后一种情况""""string""""会返回'"string"',因为我在开头有三个引号,在结尾有三个引号。Python如何解释它?

4

2 回答 2

1

Python 将其解释为:

 """"string""" "                                                                                                                   "
#^^^These three " to start the string literal. The next one counts in the string.
#The three last ones after the last one are counted as the end.

注意偏离"

你可以这样做:

'''"string"'''
于 2013-10-12T07:10:34.873 回答
1

它看到三引号字符串""""string""",后跟一个未通过 EOL 完成的非三引号字符串,"

tokenize模块可以告诉你它在做什么:

s = '""""string""""'
g = tokenize.generate_tokens(io.StringIO(s).readline)
t = list(g)
print(t)

这将打印一个带有 的 STRING 标记'""""string"""',然后打印一个带有 的 ERRORTOKEN 标记'"'

一般来说,当您不知道如何解释语法时(我假设您首先查看了语法?)回答此类问题的最佳方法是使用 tokenize、ast 和friends。

于 2013-10-12T07:19:31.787 回答