Python有相当于Perl的qq吗?

时间:2015-04-10 11:08:22

标签: python perl

使用qq,Perl几乎可以使用任何字符作为引号来定义包含'"的字符串,而无需转义它们:

qq(She said, "Don't!")
qq¬And he said, "I won't."¬

(特别方便,因为我的键盘有¬几乎从未使用过。)

Python是否具有等价物?

3 个答案:

答案 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倾向于双引号。