使用qq
,Perl几乎可以使用任何字符作为引号来定义包含'
和"
的字符串,而无需转义它们:
qq(She said, "Don't!")
qq¬And he said, "I won't."¬
(特别方便,因为我的键盘有¬
几乎从未使用过。)
Python是否具有等价物?
答案 0 :(得分:5)
您可以使用三重单引号或三重双引号。
>>> s = '''She said, "Don't!"'''
>>> print(s)
She said, "Don't!"
>>> s = """'She sai"d, "Don't!'"""
>>> print(s)
'She sai"d, "Don't!'
答案 1 :(得分:4)
您无法将任意字符定义为引号,但如果您需要在字符串中同时使用'
和"
,则可以使用多行字符串执行此操作:
>>> """She said "that's ridiculous" and I agreed."""
'She said "that\'s ridiculous" and I agreed.'
但是,请注意,如果您使用的引用类型也是字符串中的最后一个字符,Python会感到困惑:
>>> """He yelled "Whatever's the matter?""""
SyntaxError: EOL while scanning string literal
因此您必须切换到这种情况:
>>> '''He yelled "Whatever's the matter?"'''
'He yelled "Whatever\'s the matter?"'
纯粹作为替代方案,您可以将字符串拆分为多个部分,这些部分可以执行并且不具有每种引用类型,并依赖于Python隐式连接连续字符串:
>>> "This hasn't got double quotes " 'but "this has"'
'This hasn\'t got double quotes but "this has"'
>>> "This isn't " 'a """very""" "attractive" approach'
'This isn\'t a """very""" "attractive" approach'
答案 2 :(得分:0)
我刚问自己python中的quote()方法在哪里?特别是Perl的qXXX糖。在urllib中找到一个quote(),但这不是我想要的 - 那就是在字符串本身中引用字符串。然后它击中了我:
some_string = repr(some_string)
内置的repr将始终正确引用字符串。它会得到单引号。 Perl倾向于双引号。