Python 字符串中同时包含单引号和双引号

2025-04-10 09:45:00
admin
原创
17
摘要:问题描述:我试图在 Python 中创建一个包含单引号和双引号的字符串('和")。但是,Python 总是自动将其更正为(',")。我想知道是否有办法将双引号和单引号放在一起。解决方案 1:使用三重引号。"""Trip'le qu"oted"...

问题描述:

我试图在 Python 中创建一个包含单引号和双引号的字符串('")。但是,Python 总是自动将其更正为('")。我想知道是否有办法将双引号和单引号放在一起。


解决方案 1:

使用三重引号。

"""Trip'le qu"oted"""

或者

'''Ag'ain qu"oted'''

请记住,仅仅因为 Python reprsa 字符串带有反斜杠,并不意味着它实际上在字符串中添加了任何斜杠,它可能只是显示转义的特殊字符。

使用 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 试图明确地显示它。

请参阅有关字符串的教程部分。

解决方案 2:

使用三重引号字符串:

""" This 'string' contains "both" types of quote """
''' So ' does " this '''

解决方案 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" '

因此,基本上,当您引用 的值时,python 不会删除 ,`s`但当您尝试打印时会删除它。尽管如此,当您引用 的长度时`s`,它不会计算。例如,

>>> s = '''"''"'''
>>> s
'"\'\'"'
>>> print(s)
"''"
>>> len(s)
4

解决方案 4:

要在 python 上添加单引号和双引号,请使用屏蔽(转义)引号。例如,尝试以下操作:

print(" just display ' and \" ")

告诉"python 这不是引用字符串的结尾。

解决方案 5:

这也困惑了我一天多的时间,不过现在已经消化了。

首先,让我们了解一下,如果字符串通过了 DOUBLE 测试,它将输出 DOUBLE 引号:

  1. 包含单引号

  2. 不包含双引号

这是最简单的记住方法。

该字面值"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。

解决方案 6:

您可以 (1) 将字符串括在双引号中,并使用 a 对双引号进行转义;或者 (2) 将字符串括在单引号中,并使用 a 对单引号进行转义。例如:

>>> print('She is 5\' 6" tall.')
She is 5' 6" tall.
>>> print("He is 5' 11\" tall.")
He is 5' 11" tall.

解决方案 7:

在 f 字符串中,我不能使用反斜杠。那时,使用 chr() 可能是解决方案!

print(f"- tokenizer: {' '.join(str(type(tokenizer)).split(chr(39))[1:-1])}")

Unicode 指南

解决方案 8:

尽管它更冗长,但另一种方法是执行以下操作:

str1 = 'the part that has double "s" in it'

str1 = str1 + " the part that has single 's' in it"

解决方案 9:

在某些情况下,使用三重引号似乎对我来说不起作用。

例如,我曾经面临过操纵这个脚本使其更加动态的问题。

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()

如果您无法使用三重引号,它可能会为您提供一些线索。

干杯!

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用