了解双引号与单引号的字符串生成

Posted

技术标签:

【中文标题】了解双引号与单引号的字符串生成【英文标题】:Understanding string generation of double vs single quotes 【发布时间】:2021-03-17 13:23:15 【问题描述】:

我试图理解为什么有时会为我的列表创建功能生成双引号而不是单引号。我有一个在多个文本文件上使用过的函数,通常输出是一个带单引号的列表,但现在会生成双引号(当我需要单引号时)。

有人能帮我理解为什么会在此处生成双引号和/或强制使用单引号的方法吗?

for below structure is :
string_text is str
text_list is list
list_text is list

def view(string_text):
   text_list = []
   for t in list_text:
       text_list.append(string_text + """   more text """ + t + 
                        """ more text """)
   return text_list
text_list = view(string_text)

附加是特定于我的用例的,但你明白了。为 text_list 生成双引号。

list_text sample = ['a','b','c']

【问题讨论】:

双引号在哪里弹出?你能举例说明list_text中的内容吗? 是的,编辑了问题 string_text is str text_list is list list_text is list 应该在你的代码中做什么? 另外,您似乎正在通过连接字符串来创建 SQL 查询,请注意 SQL injection 当我运行示例时,我得到单引号。应该没什么区别,但我可以问一下为什么你的字符串使用 docstring 三双引号? 【参考方案1】:

所以让我们把你的代码变成可以直接粘贴到python控制台窗口的东西:

def view(string_text):
    text_list = []
    for t in list_text:
        text_list.append(string_text + """   more text """ + t +
                         """ more text """)
    return text_list

list_text = ['a', 'b', 'c']
text_list = view('123')
text_list

表演

['123   more text a more text ', '123   more text b more text ', '123   more text c more text ']

为什么?因为字符串的字符串表示使用',直到字符串中包含'。然后它使用" 来分隔字符串。

更简单的例子是

>>> "'"
"'"
>>> '"'
'"'
>>> "'\""
'\'"'

但这不应该有所作为。如前所述,这只是您程序中存在的字符串的字符串表示形式。这些定界符实际上并不在字符串本身中。看看str()repr() 分别做什么。

【讨论】:

如果我理解正确,如果我的字符串文本已经包含',那么它将强制" @paranormaldist 然后它使用" 作为分隔符,是的。但是,我不会谈论“武力”。【参考方案2】:

这不是为什么会发生这种情况的解释,而是可能是一个解决方案:如果您将另一个 str() 包裹在您的字符串周围(双引号或单引号),则结果应该始终是单引号,至少在我尝试时是这样。

【讨论】:

以上是关于了解双引号与单引号的字符串生成的主要内容,如果未能解决你的问题,请参考以下文章

请教Linux shell命令中双引号与单引号嵌套的问题

JavaScript中的双引号与单引号[重复]

单引号和双引号的一些总结

shell脚本中单引号和双引号的区别

php单引号中可以包含双引号吗

php 的单引号和双引号的用法