#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, можете ли вы попробовать мою последнюю версию. Может быть, это вам поможет.