у меня есть CSV, который нужно очистить, прежде чем читать его в таблицу. Труба-delimted, структура 10 колонок. Проблема в том, что в некоторых записях 9-я колонка имеет возврат каретки. Мне нужно заменить эти экземпляры CRLF строкой символов (как держатели места), например#$%, но мне нужно только заменить crlf, которые являются в 9-й столбец для каждой записи.
так вот в этом примере:
Susan|Ward |1 |1 |1 |1 |0 |||3250905
Allen|Doe|4 |1 |1 |1 |0 ||
some text
text
more text in the same column|3250061
Mary|James|4 |1 |1 |1 |0 |||3250061 Albert|Nordling|1 |1 |1 |0 |0 |||900434
Henry|Johnson|1 |1 |1 |0 |0 |||900434
Tony|Anderson |1 |1 |1 |1 |0 |||3250905
записи для Сьюзан, Генри и Тони все есть 9 труб, но у Аллена есть экземпляры CRLFs (в Notepad++), которые необходимо заменить, чтобы "вытащить" их все до одной строки, чтобы получить эту запись на одной строке.
кроме того, записи Мэри и Альберта находятся на одной линии. Мне нужно найти и их, чтобы разделить.
таким образом, регулярное выражение, чтобы найти строки, которые не имеют ровно 9 труб, сделало бы трюк.
Я могу найти записи с 9-м столбцом на нескольких строках с этим регулярное выражение:
^[^|]*$
но я не могу понять, как найти все линии не есть 9 труб (10 колонок). Это не сработает:
^[^|{9}]*$
что бы это сделать?
один конкретный момент: если вообще возможно, мне нужно, чтобы поиск мог выбрать весь блок строк (который будет каждой записью), у которых нет 9 труб. Поэтому в моем примере строка, начинающаяся с Allen, поиск в Notepad++ выделит эту строку и следующие 3 строки. Регулярное выражение ^[^|]*$
выбрал бы все три линии после линии Аллена, так как это ищет линии без труб вообще.