В настоящее время я пытаюсь очистить файлы csv, сгенерированные автоматически полями, содержащими разделитель csv и разделителем полей, с помощью sed или awk или с помощью скрипта.Как очистить файл csv, где поля содержат разделитель и разделитель csv
Исходное программное обеспечение не имеет параметров для игры, чтобы улучшить ситуацию.
Формат CSV:
"111111";"text";"";"text with ; and " sometimes "; or ;" multiple times";"user";
К счастью, CSV является «хорошо» отформатирован, программное обеспечение экспортирующие просто не избежать или заменить «запрещенные» символы с полей.
В последние несколько дней я пытался улучшить свои знания о регулярном выражении и найти выражение для очистки файлов, но я потерпел неудачу.
Что мне удалось сделать до сих пор:
RegEx найти поле (я хотел найти поля и выполнить замену внутри, но я не нашел способ сделать это)
(?:";"|^")(.*?)(?=";"|";\n)
RegEx, который находит точку с запятой, не работает, если точка с запятой является последним символом поля, только найдите одно поле.
(?:^"|";")(?:.*?)(;)(?:[^"\n].*?)(?=";"|";\n)
RegEx найти двойные кавычки, кажется, выбрать первый двойные кавычки строки в интернет-тестеров регулярных выражений
(?:^"|";")(?:.*?)[^;](")(?:[^;].*?)(?=";"|";\n)
Я думал о добавлении пространства между каждыми символов в полях, то в поисках одиноко полу двоеточие и двойные кавычки и удалить одно место после этого, но я не знаю, возможно ли это, и все равно похоже на плохое решение.
Спасибо за ваш ответ. К сожалению, я не могу изменить выход программного обеспечения и не иметь доступа к его базе данных. И поля - это комментарии, введенные пользователями, в этом нет шаблона. Мне нужно загрузить эти данные в базу данных mysql, и я использую функцию «load data infile», и она не может обрабатывать эти записи. –
Как вы получили данные? Вы можете определенно запросить ответственного за передачу данных за использование каких-либо других разделителей типа «\ t» или использование escape-символа для обеспечения правильного форматирования. Вы должны просто сообщить им, что данные не анализируются. – Aditya
Абсолютно не контролируется формат csv, только экспортированные строки и столбцы. Я буду больше смотреть на функцию awk. Из вашей ссылки я узнал, что вы можете использовать регулярное выражение в качестве разделителя полей с awk, я думал, что возможен только один символ. Еще раз спасибо. –