У меня есть два столбца CSV с именем и номером. Некоторые люди используют запятые, например. Joe Blow, CFA.
Эта запятая нарушает формат CSV, поскольку она интерпретируется как новый столбец.
Я прочитал, и наиболее распространенный рецепт, кажется, заменяет этот символ или заменяет разделитель новым значением (например this|that|the, other
).
Мне бы очень хотелось оставить запятую (я знаю, что Excel поддерживает другие разделители, но другие интерпретаторы могут этого не делать). Я также хотел бы оставить запятую в имени, так как Joe Blow| CFA
выглядит довольно глупо.
Есть ли способ включить запятые в столбцы CSV, не нарушая форматирование, например, экранируя их?
Ответы:
Заключите поле в кавычки, например
Смотрите википедию .
Обновлено :
Чтобы кодировать кавычку, используйте
"
один символ двойной кавычки в поле""
, и все поле станет""""
. Так что если вы видите следующее, например, в Excel:CSV-файл будет содержать:
Запятая просто заключена в кавычки, поэтому
,
становится","
.Запятая и кавычка должны быть заключены в кавычки и заключены в кавычки, так
","
становится""","""
.источник
","
), а кавычки экранированы (например"""
)Проблема с форматом CSV заключается в том, что здесь нет единой спецификации, есть несколько принятых методов, без какого-либо способа различения, которые следует использовать (для генерации / интерпретации). Я обсуждал все методы экранирования символов (в этом случае - переводы строки, но те же основные предпосылки) в другом посте . В основном все сводится к использованию процесса генерации / экранирования CSV для предполагаемых пользователей, и надеюсь, что остальные не возражают.
Ссылка спецификации документа .
источник
Если вы хотите сделать то, что вы сказали, вы можете использовать кавычки. Что-то вроде этого
так что теперь вы можете использовать запятую в вашей переменной имени.
источник
$whatever = "\"".$name."\"";
Вы должны процитировать эти значения.
Вот более подробная спецификация.
источник
В дополнение к пунктам в других ответах: при использовании кавычек в Excel важно отметить размещение пробелов. Если у вас есть такая строка кода:
Excel будет воспринимать первоначальную кавычку как буквальную кавычку, а не использовать ее для экранирования запятых. Ваш код нужно будет изменить на
Именно эта тонкость привела меня сюда.
источник
Я столкнулся с той же проблемой, и цитирование
,
не помогло. В конце концов, я заменил,
с+
, закончил обработку, сохранить вывод в выходной файл и заменил+
с,
. Это может показаться некрасивым, но это сработало для меня.источник
+
вообще не существует в моих данных. Спасибо за добрый комментарий.""
. Это нормальный способ сделать это.field = field.replace('"', '""')
Шаг 2 - после шага 1, заключите само поле в двойные кавычки, напримерfield = '"' + field + '"'
- тогда я думаю, что вы залиты железом.В зависимости от вашего языка может быть доступен метод to_json. Это избежит многих вещей, которые ломают CSV.
источник
Я обнаружил, что некоторые приложения, такие как Numbers в Mac, игнорируют двойную кавычку, если перед ней есть место.
a, "b,c"
не работает, покаa,"b,c"
работает.источник
Вы можете кодировать свои значения, например, в PHP base64_encode ($ str) / base64_decode ($ str)
ИМО это проще, чем удваивать цитаты и т. Д.
https://www.php.net/manual/en/function.base64-encode.php
Закодированные значения никогда не будут содержать запятую, поэтому каждая запятая в вашем CSV будет разделителем.
источник
Вы можете использовать литералы шаблона (строки шаблона)
например -
источник
Вы можете использовать это
Text_Qualifier
поле в диспетчере соединений с плоскими файлами как"
. Это должно обернуть ваши данные в кавычки и разделить их запятыми, которые находятся вне кавычек.источник
Во-первых, если значение элемента имеет символ двойной кавычки ("), замените его символом двойной кавычки (" ")
Наконец, оберните значение элемента:
НА левом: с двойной кавычкой (")
ON RIGHT: с двойной кавычкой (") и запятой (,)
источник
Двойные кавычки не работали для меня, это работало для меня
\"
. Если вы хотите поместить двойные кавычки в качестве примера, вы можете установить\"\"
.Вы можете построить формулы, например:
напишу в csv:
источник
Может быть, это не то, что нужно здесь, но это очень старый вопрос, и ответ может помочь другим. Совет, который я считаю полезным при импорте в Excel с другим разделителем, - это открыть файл в текстовом редакторе и добавить первую строку, например:
Сентябре = |
где | это разделитель, который вы хотите использовать в Excel. В качестве альтернативы вы можете изменить разделитель по умолчанию в Windows, но немного затянуто:
Панель управления> Часы и регион> Регион> Форматы> Дополнительно> Числа> Разделитель списка [смените запятую на предпочитаемую вами альтернативу]. Это означает, что Excel также будет по умолчанию экспортировать файлы CSV с использованием выбранного разделителя.
источник