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

问题描述

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

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

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 控制台窗口的东西:

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() 的不同之处。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...