如何将包含单引号和双引号值的 Python 列表转换为所有双引号值
Posted
技术标签:
【中文标题】如何将包含单引号和双引号值的 Python 列表转换为所有双引号值【英文标题】:How to convert Python list containing single quotes as well as double quotes values to all Double quotes values 【发布时间】:2019-04-16 08:31:12 【问题描述】:我想将包含单引号和双引号的 python 列表转换为所有带有双引号的值 我想这样做是因为我想将该列表转换为元组,而不是将该元组输出给 postgresql 查询
我尝试过 JSON 转储方法,但也没有成功,因为您无法将 JSON 列表转换为元组以将元组作为 postgresql 查询的输出
list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
希望输出为:-
list = ["parrot", "dog", "leopard's", "cat", "zebra's"]
【问题讨论】:
两个列表没有区别 【参考方案1】:对于python来说两者没有区别:
>>> list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
>>> list2 = ["parrot", "dog", "leopard's", "cat", "zebra's"]
>>> list == list2
True
您可以将它们转换为元组,它们仍然是相同的:
>>> tuple(list) == tuple(list2)
True
""
或''
的用法只是字符串“构造函数”的一种表示形式,只有在字符串中包含其他类型的引号时才会发生变化。
【讨论】:
我想将此列表转换为元组并将此元组提供给要求所有值都在单引号或双引号中的 postgresql 查询。 @Shubham,你遗漏了一些东西,因为没有区别,你可以在这些列表中的任何一个上调用tuple
,它们仍然是相同的
感谢您的回复,但是Postgres
查询不接受包含单引号和双引号的元组,它要求所有值都在单引号或双引号中
@Shubham,在问题中发布错误以便我们检查,因为您可能发送了格式错误的简单字符串。
@Shubham 没有区别......您是否使用 Python 和 postgres 库来连接和使用 postgres?如果是这样 - 您根本不需要担心任何引用 - 只需包含您想要发送的内容(作为列表或元组 - 甚至是混合字符串/日期时间/整数/浮点数),db api 会为您整理好所有内容.【参考方案2】:
根据您的建议
>>> list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
>>> import json
>>> print(json.dumps(list))
["parrot", "dog", "leopard's", "cat", "zebra's"]
【讨论】:
感谢您的回复我无法将此 JSON 列表值转换为元组 因为json.dumps
返回的是字符串而不是字符串列表。事物的类型及其表现形式不同【参考方案3】:
单引号或双引号都无所谓,但如果使用已经有默认值的名称,你会遇到一些麻烦。
list_1 = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
tuple_new = tuple(list_1)
这部分代码可以帮助你从列表中创建一个元组。
>>>list_1
['parrot', 'dog', "leopard's", 'cat', "zebra's"]
>>>tuple(list_1)
('parrot', 'dog', "leopard's", 'cat', "zebra's")
无论如何你都会得到一个字符串元组。
如果你尝试按照你想要的方式来制作它,python 会返回这个:
>>list_1
['parrot', 'dog', "leopard's", 'cat', "zebra's"]
>>'leopard\'s'
"leopard's"
>>'parrot'
'parrot'
>>"parrot"
'parrot'
我找到了方法。
>>list1 = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
>>str1 = json.dumps(list1)
>>str1 = str1.replace("[", "")
>>str1 = str1.replace("]", "")
>>list2 = str1.split(", ")
>>list2
['"parrot"', '"dog"', '"leopard\'s"', '"cat"', '"zebra\'s"']
【讨论】:
有什么方法可以把这个列表list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
改成这个双引号列表list = ["parrot", "dog", "leopard's", "cat", "zebra's"]
@Shubham,如您所见,我已经编辑了我的答案。 Python 自动更改引号。我认为您可以尝试将每个元素都写为 postgresql 元组中的字符串。但是你的错误必须有另一个问题。也许您可以发布它的日志?
感谢您的回复,但问题是我从另一个 postgresql
选择查询中获取此列表输出,因此我无法对列表值进行硬编码,因为它们会更改,这就是我需要转换此列表值的原因双引号。
@Shubham,您可以迭代列表并转换其值:for e in list1: e=str(e)
类似这样的东西
@Shubham,你能试试我的上一版吗?也许它会帮助你。以上是关于如何将包含单引号和双引号值的 Python 列表转换为所有双引号值的主要内容,如果未能解决你的问题,请参考以下文章