您好我正在尝试在python中包含单引号和双引号的字符串 - ('“)。我需要此表达式的原因是用作某些外部批处理命令的输入。但是,python总是自动将其更正为(\'“)。我想知道是否有办法将双引号和单引号放在一起。谢谢。
答案 0 :(得分:28)
使用三重引号。
"""Trip'le qu"oted"""
或
'''Ag'ain qu"oted'''
请记住,仅仅因为Python repr
是一个带反斜杠的字符串,并不意味着它实际上是在字符串中添加了任何斜杠,它可能只是显示转义的特殊字符。
使用Python教程中的示例:
>>> len('"Isn\'t," she said.')
18
>>> len('''"Isn't," she said.''')
18
即使第二个字符串出现一个较短的字符,因为它没有反斜杠,但它实际上是相同的长度 - 反斜杠只是为了逃避单引号字符串中的单引号。
另一个例子:
>>> for c in '''"Isn't," she said.''':
... sys.stdout.write(c)
...
"Isn't," she said.
>>>
如果你不让Python格式化字符串,你可以看到字符串没有被改变,只是Python试图明确地显示它。
答案 1 :(得分:4)
使用三引号字符串:
""" This 'string' contains "both" types of quote """
''' So ' does " this '''
答案 2 :(得分:3)
实际问题是,print()语句不会打印\但是当您在解释器中引用字符串的值时,只要使用撇号,它就会显示“\”。例如,请参阅以下代码:
>>> s = "She said, \"Give me Susan's hat\""
>>> print(s)
She said, "Give me Susan's hat"
>>> s
'She said, "Give me Susan\'s hat"'
这与您是否使用单引号,双引号或三引号括起字符串无关。
>>> s = """She said, "Give me Susan's hat" """
>>> s
'She said, "Give me Susan\'s hat" '
包含此内容的另一种方法:
>>> s = '''She said, "Give me Susan's hat" '''
>>> s
'She said, "Give me Susan\'s hat" '
>>> s = '''She said, "Give me Susan\'s hat" '''
>>> s
'She said, "Give me Susan\'s hat" '
所以基本上,当你引用s的值时,python不会删除\,但是当你尝试打印时删除它。尽管如此,当你提到s的长度时,它并不算“\”。 例如,
>>> s = '''"''"'''
>>> s
'"\'\'"'
>>> print(s)
"''"
>>> len(s)
4
答案 3 :(得分:3)
要在python上添加单引号和双引号,请使用屏蔽(转义)引号。 试试这个例子:
print(" just display ' and \" ")
\"
告诉python这不是引用字符串的结尾。
答案 4 :(得分:1)
这也让我困惑了一天多,但我现在已经消化了。
首先,让我们明白,如果字符串通过 DOUBLE 测试,将输出双引号:
这是最容易记住的方式。
文字 "doesn't"
由于撇号而通过了第一个测试,它算作单引号。然后,我们重新检查它,发现它的外壳内不包含任何双引号。因此,字符串文字输出为双引号:
>>> "doesn't"
"doesn't"
没有必要在输出中用反斜杠转义单引号,因为外壳是由双引号组成的!
现在考虑文字 '"Isn\'t," they said.'
这个文字通过了第一个测试,因为它包含一个撇号,即使它被转义了。但是,它也包含双引号,因此它无法通过第二个测试。因此,它输出为单引号:
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
并且由于外壳由单引号组成,因此在输出中需要转义。
如果不是输出中的反斜杠,扫描文字时就会到达 EOL(行尾)。
最后,考虑"\"Isn't,\" they said."
文字中有一个单引号,所以它确实通过了第一个测试……但第二个测试失败了。输出应将字符串文字括在单引号中:
>>> "\"Isn't,\" they said."
'"Isn\'t," they said.'
因此,需要进行逃逸以防止过早的 EOL。
答案 5 :(得分:0)
虽然它更冗长, 另一种方法是做以下事情:
str1 ='其中包含双“s”的部分
str1 = str1 +“其中包含单个's'的部分”
答案 6 :(得分:0)
您可以(1)将字符串括在双引号中并使用\
转义双引号或(2)将字符串括在单引号中,并使用\
转义单引号。例如:
>>> print('She is 5\' 6" tall.')
She is 5' 6" tall.
>>> print("He is 5' 11\" tall.")
He is 5' 11" tall.
答案 7 :(得分:0)
答案 8 :(得分:0)
在某些情况下,使用三重引号似乎对我不起作用。
例如,我曾经遇到过将这个脚本操作得更加动态的问题。
listed = drive.ListFile({'q': "title contains '.mat' and '1GN8xQDTW4wC-dDrXRG00w7CymjI' in parents"}).GetList()
在'q':
之后的部分,有一个双引号和单引号的字符串。所以,我打算独立更改文件类型('.mat)和文件夹 ID('1GN...')。
处理这个问题,我用.format
来操作上面的脚本,变成这个
listed = drive.ListFile({'q': "title contains '{}' and '{}' in parents".format(file_type, folder_id)}).GetList()
如果您无法使用三重引号,请提供一些线索。
干杯!