Любой способ ввода чисел, разделенных запятой в CSV? - PullRequest
1 голос
/ 08 января 2020

Мне нужно загрузить CSV-файл, который содержит числа, разделенные запятыми.

Есть ли способ не допустить, чтобы он интерпретировался как разделитель CSV? Или я должен использовать файл TSV?

Спасибо.

1 Ответ

0 голосов
/ 12 января 2020

Вы можете изменить различные настройки при использовании функции fgetcsv :

fgetcsv (
    resource $handle
    [, int $length = 0
    [, string $delimiter = ","
    [, string $enclosure = '"'
    [, string $escape = "\\" ]]]]
)

Вы можете установить разделитель на любой нужный символ (пробел , tab, pipe и т. д. c).

Вложение предназначено для случаев, когда необходимо включить содержимое, которое обычно нарушает формат файла (например, наличие запятой в содержимом, когда запятая используется в качестве разделителя). ). По умолчанию используется двойная кавычка. Например:

id, имя

1, Тед Менд

2, Трейси Гейл

4, Джон Ди, младший

Строка с идентификатором 4 может привести к разрыву файла, поскольку в имени есть запятая, но перенос символа с символом включения заставляет синтаксический анализатор игнорировать символы прерывания внутри. Следующие значения будут действительны, и запятая перед младшим не вызовет ошибку или неверное прочтение строк:

id, имя

1, "Ted Mend"

2 , "Tracy Gale"

4, "John Dee, Jr"

Последний аргумент, escape-символ, используется, если вам все еще нужно использовать его в прилагаемой строке ( например, двойная кавычка в двойных кавычках). Вы можете поместить escape-символ перед любым символом двойной кавычки в содержимом двойной кавычки, чтобы убедиться, что он не нарушает формат:

id, title, type

1, "Up" "," mov ie "

2," Унесенные ветром "," mov ie "

3," \ "The Witcher 3 \" "," video- game "

Обратите внимание, что в двойных кавычках в названии видеоигры есть обратная косая черта sh. Это позволяет анализатору знать, что двойные кавычки вокруг заголовка должны быть частью строки заголовка, а не концом содержимого столбца.

...