golang регулярное выражение для удаления двойных кавычек в поле в файле CSV - PullRequest
1 голос
/ 05 мая 2020

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

input2, err := ioutil.ReadFile("input.csv")
if err != nil {
    fmt.Println(err)
    os.Exit(1)
}

output2 := bytes.Replace(input2, []byte("[^;]\"|\"[^;]"), []byte(""), -1)

if err = ioutil.WriteFile("output.csv", output2, 0666); err != nil {
    fmt.Println(err)
    os.Exit(1)
}

В моем случае я просто хотел удалить все двойные кавычки, у которых нет точки с запятой до или после, но пока это ничего не заменяет в файле.

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

Если вы обрабатываете файлы CSV, лучше всего использовать пакет encoding / csv.

0 голосов
/ 05 мая 2020

Вы можете использовать

output2 := regexp.MustCompile(`(?m)(^"|"\r?$|";")|"`).ReplaceAll(input2, []byte("${1}"))

См. демонстрацию регулярных выражений

Шаблон соответствует

  • (?m) - многострочный флаг, который делает ^ совпадение позиций начала строки и $ конца строки (примечание: $ в многострочном режиме соответствует только перед LF, \n, не перед CR, \r!)
  • (^"|"$|";") - Группа захвата 1 (ее значение обозначается ${1} из шаблона замены):
    • ^"| - " в начале строки или
    • "\r?$| - a " в конце строки или
    • ";" - a ", затем ;", затем "
  • | - или
  • " - a " в любом другом контексте.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...