Как развернуть конвертирует файл CSV в файл с пробелом? Скалярная искра - PullRequest
2 голосов
/ 10 июня 2019

У меня есть CSV файл. Это мой вклад:

,"",3,"a_b","cde 
f\gh","i j","k,""l"

Теперь я хочу преобразовать файл CSV в файл, разделенный пробелами. Что мне делать?

Это технические характеристики:

  1. Данные, которые распознаются как разделенные запятыми, включают строка 0 (не заключенная в двойные кавычки) и строка 1 (заключенная в двойные кавычки).
  2. Пустая строка 0 преобразуется в 0, пустая строка 1 преобразуется в "_". (-z опция изменяется 0 в string0, -n опция изменяется _ в строке 1)
  3. Экранированные двойные кавычки внутри строки 1 преобразуются в одиночные ". Вы не можете использовать двойные кавычки в строке 0.
  4. Пробелы половинной ширины внутри любой строки преобразуются в "_" (-s изменения параметров _)
  5. -e предшествует "_" (или символу, указанному опцией -s) и "\" на "\".
  6. -q исключает предшествующие "\" формы "\"" и "\\".
  7. \r\n в конце строки автоматически преобразуется в \n.
  8. Любой \n внутри строки 1 преобразуется в "\n".
  9. Последняя строка не требует перевода строки (\n).

Я хочу получить желаемый результат, как показано ниже. Пожалуйста, помогите мне.

0 _ 3 a\_b cde\nf\\gh i_j k,"l

1 Ответ

0 голосов
/ 10 июня 2019

Вы можете использовать itto-csv https://github.com/gekomad/itto-csv для токенизации csv

implicit val csvFormat: com.github.gekomad.ittocsv.parser.IttoCSVFormat = com.github.gekomad.ittocsv.parser.IttoCSVFormat.default
import com.github.gekomad.ittocsv.util.StringUtils._

val csvString = "1,foo"
val stringList = tokenizeCsvLine(csvString) //  Some(List("1", "foo")))

и применить свои спецификации к stringList

stringList.getOrElse(???).map(field => yourSpec(field))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...