- Заключить все строковые значения в двойные кавычки (").
- Сохранять числовые значения неизменными ( без кавычек).
- Оставьте пустые ячейки такими, какие они есть.
Код: Выделить всё
import pandas as pd
import csv
# Sample DataFrame
data = {'col1': ['hello, world', 'test', '', None], 'col2': [123, 456, 789, None]}
report_df = pd.DataFrame(data)
# Add quotes only to non-numeric, non-empty cells
for col in report_df.select_dtypes(include=['object', 'bool']).columns:
report_df[col] = report_df[col].apply(
lambda x: f'"{x}"' if pd.notnull(x) and str(x).strip() != "" else ""
)
# Write to CSV without quoting numeric columns
report_df.to_csv("output.csv", index=False, quoting=csv.QUOTE_NONE, escapechar=" ")
Код: Выделить всё
"hello\, world",123
"test",456
,789
,
Код: Выделить всё
"hello, world",123
"test",456
,789
,
Проблема с пользовательской логикой: при объединении csv.QUOTE_MINIMAL с моей пользовательской логикой для цитирования всех строк результирующий вывод имеет дополнительные двойные кавычки, например:
Код: Выделить всё
""""hello, world""""
""""test""""
,
- Последовательно заключает в кавычки все строковые значения, в том числе с запятыми, без добавления escape-символов. или дополнительные кавычки.
- Сохраняет числовые значения и пустые ячейки без изменений.
Подробнее здесь: https://stackoverflow.com/questions/792 ... s-empty-ce
Мобильная версия