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

Understanding string generation of double vs single quotes

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

有人能帮我理解为什么这里会生成双引号吗and/or一种强制单引号的方法?

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']

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

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

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() 分别执行的操作之间的区别。