Как заставить Python 3 выводить строку с помощью одинарных кавычек?

1

При подготовке запросов вставки для таблицы PostgreSQL Postgres не принимает двойные кавычки для значений объемного звучания. Например, burja duba''i должен быть burja duba''i (записан в файл) как " burja duba''i ", однако, поскольку в пределах burja duba''i есть одинарные кавычки, выходы Python 3 "burja duba''i". Как получить желаемый формат: 'burja duba''i'?

PS Я предпочел бы подготовить инструкцию отдельно, а затем запустить их, чем использовать psycopg2.


Попытки решить эту проблему:

>>> a = "burja duba''i"
>>> b = a.split("''")
>>> b[0] + "''" + b[1]
"burja duba''i"
# still same as a

Stoopid Я знаю, но я застрял

  • 2
    Почему не a = "'burja duba''i'" ?
  • 0
    Я не уверен, что понимаю проблему. Каким образом «Python выводит строки с двойными кавычками при их печати» в связи с «Postgres не принимает двойные кавычки»? Способ, которым Python подготавливает данные для stdout, не должен иметь никакого отношения к данным, которые получает Postgres, потому что Python не отправляет данные в Postgres через stdout, если вы не делаете что-то очень странное. Можете ли вы поделиться кодом, где вы фактически запускаете оператор?
Показать ещё 4 комментария
Теги:
python-3.x

3 ответа

0
Лучший ответ

Вы должны использовать экранированные символы -

a = "burja duba''i"
b = a.split("''")
print('\'' + b[0] + '\'\'' + b[1] + '\'')

ВЫХОД

'burja duba''i'
2

если вы хотите связать свою строку в одинарных кавычках, вы можете использовать этот код.

a = 'burja duba \'\'i
1

Я считаю, что вы хотите окружить строку одиночными кавычками, попробуйте использовать следующее:

>>> a = "burja duba''i"
>>> b = a.split("''")
>>> "'%s ''%s'" % (b[0], b[1])
'burja duba''i'

Я предпочитаю использовать % потому что это быстрее, чем альтернативный .format.

Другие альтернативы - избежать символа и т.д. - Хотя я бы не пошел по этому маршруту, держите его в чистоте.

  • 0
    Последняя строка: "'burja duba ''i'"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню