#python #python-3.x #pandas
Вопрос:
Я запускаю этот код ниже и выводю результаты в csv-файл:
df['Post Town'] = '"' df['Post Town'].astype(str) '"'
df.to_csv('filename.csv', index=False)
Однако я заметил, что в notepad мои строки возвращаются с тройными кавычками. Есть ли способ обойти это, поскольку мне нужны только двойные кавычки ASCII?
Желанный: "string"
Текущий: """string"""
Комментарии:
1. Вы пробовали не добавлять лишние кавычки
df['Post Town'].astype(str)
?
Ответ №1:
to_csv()
вставляет необходимые двойные кавычки вокруг вашего поля уже, но так как поле содержит двойные кавычки (вы вставляете их вручную), их необходимо экранировать.
Формат CSV описан в RFC-4180, в котором говорится: «Если для заполнения полей используются двойные кавычки, то двойная кавычка, появляющаяся внутри поля, должна быть экранирована, предшествуя ей другой двойной кавычкой».
Итак, «ваши» двойные кавычки экранируются двойными двойными кавычками, а затем вокруг поля помещается еще одна пара двойных кавычек to_csv()
. И поскольку вы ставите «свои» двойные кавычки в начале и в конце поля, вы получите тройные двойные кавычки.
Решения:
- Если вы хотите, чтобы процесс чтения CSV создавал строку с одинарными двойными кавычками вокруг нее: тройные двойные кавычки верны.
- Если вы хотите, чтобы процесс чтения CSV создавал строку без кавычек вокруг нее: позвольте
to_csv()
обрабатывать внешние кавычки вокруг поля. - Если вам нужен другой вариант формата CSV (вариантов много), вам нужно отредактировать параметры
to_csv()
.
Комментарии:
1. Да, вы правы, однако моя проблема заключалась в том, как я создавал CSV. Но, добавив следующее (
quotechar='"', sep=',', quoting=csv.QUOTE_NONNUMERIC
) При создании CSV. Спасибо!2. @MizanurChoudhury Хорошо, я добавил третье решение, чтобы отразить вашу ситуацию 🙂
Ответ №2:
Попробуйте изменить
df['Post Town'] = '"' df['Post Town'].astype(str) '"'
Для
df['Post Town'] = df['Post Town'].astype(str)