Как преобразовать список Python, содержащий одинарные кавычки, а также значения в двойных кавычках, во все значения в двойных кавычках

#python-3.x #postgresql

#python-3.x #postgresql

Вопрос:

Я хочу преобразовать список python, содержащий одинарные кавычки, а также двойные кавычки, во все значения с двойными кавычками. Я хочу сделать это, потому что я хочу преобразовать этот список в кортежи, а затем передать вывод этих кортежей в запрос postgresql

Я пробовал метод JSON dumps, но тоже не сработал, потому что вы не можете преобразовать список JSON в кортежи, чтобы предоставить кортеж в качестве вывода для запроса postgresql

 list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"]
 

Требуется вывод в виде:-

 list = ["parrot", "dog", "leopard's", "cat", "zebra's"]
 

Комментарии:

1. Между обоими списками нет разницы

Ответ №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
 

Использование "" or '' — это просто представление строкового «конструктора», и оно изменяется только в том случае, если у вас есть кавычки другого типа внутри строки.

Комментарии:

1. Я хочу преобразовать этот список в кортежи и передать эти кортежи в запрос postgresql, который требует, чтобы все значения были в одинарных кавычках или двойных кавычках.

2. @Shubham, вы что-то упускаете, потому что разницы нет, вы можете вызвать tuple любой из этих списков, и они все равно будут одинаковыми

3. Спасибо за ответ, но Postgres запрос не принимает кортежи, содержащие одинарные и двойные кавычки, для этого требуется, чтобы все значения были в одинарных или двойных кавычках

4. @Shubham, опубликуйте ошибку в вопросе, чтобы мы могли проверить, потому что вы можете отправлять простую строку с неправильным форматированием.

5. @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"]
 

Комментарии:

1. Спасибо за ваш ответ, я не могу преобразовать значения этого списка JSON в кортежи

2. потому 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"']
 

Комментарии:

1.Есть ли какой-либо способ изменить этот список list = ['parrot', 'dog', "leopard's", 'cat', "zebra's"] на этот список в двойных кавычках list = ["parrot", "dog", "leopard's", "cat", "zebra's"]

2. @Shubham, я отредактировал свой ответ, как вы можете видеть. Python автоматически изменяет кавычки. Я думаю, вы можете попробовать записать каждый элемент в виде строки в кортеже postgresql. Но у вашей ошибки должна быть другая проблема. Может быть, вы можете опубликовать его журнал?

3. Спасибо за ваш ответ, но проблема в том, что я получаю вывод этого списка из другого postgresql запроса select, поэтому я не могу жестко закодировать значение списка, поскольку они изменятся, поэтому мне нужно преобразовать значения этого списка в двойные кавычки.

4. @Shubham, вы можете перебирать список и преобразовывать его значения: for e in list1: e=str(e) что-то вроде этого

5. @Shubham, можете ли вы попробовать мою последнюю версию. Может быть, это вам поможет.