Я использую Java org.apache.commons.csv
(версия 1.8) с режимом кавычек MINIMAL для записи файла CSV.
Мне интересно, ожидается ли следующее цитирование в отношении цитирования ячейки "foo bar "
:
csvPrinter.printRecord("eggs", "foo bar ", "spam");
дает на выходе:
eggs,"foo bar ",spam
My ожидается, что двойные кавычки не должны присутствовать в режиме котировки MINIMAL .
Минимальный пример здесь:
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.commons.csv.QuoteMode;
@Test
public void test() throws IOException {
CSVFormat csvFormat = CSVFormat.EXCEL
.withQuoteMode(QuoteMode.MINIMAL);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
CSVPrinter csvPrinter = new CSVPrinter(writer, csvFormat);
csvPrinter.printRecord("eggs", "foo bar ", "spam");
csvPrinter.flush();
csvPrinter.close();
}
Для сравнения, та же запись, напечатанная с Python pandas, не содержит кавычек:
import pandas
import sys
import csv
df = pandas.DataFrame({'a': ['eggs'], 'b': ['foo bar '], 'c': ['spam']})
df.to_csv(sys.stdout, quoting= csv.QUOTE_MINIMAL)
,a,b,c
0,eggs,foo bar ,spam <<< No quotes!
Я что-то упустил ...?