我在 Python 的交互式控制台中尝试了以下操作:
>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal
我希望后一种情况""""string""""
会返回'"string"'
,因为我在开头有三个引号,在结尾有三个引号。Python如何解释它?
我在 Python 的交互式控制台中尝试了以下操作:
>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal
我希望后一种情况""""string""""
会返回'"string"'
,因为我在开头有三个引号,在结尾有三个引号。Python如何解释它?
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"'''
它看到三引号字符串""""string"""
,后跟一个未通过 EOL 完成的非三引号字符串,"
。
tokenize模块可以告诉你它在做什么:
s = '""""string""""'
g = tokenize.generate_tokens(io.StringIO(s).readline)
t = list(g)
print(t)
这将打印一个带有 的 STRING 标记'""""string"""'
,然后打印一个带有 的 ERRORTOKEN 标记'"'
。
一般来说,当您不知道如何解释语法时(我假设您首先查看了语法?)回答此类问题的最佳方法是使用 tokenize、ast 和friends。