2013-12-03 4 views
0

Я работаю с большими данными, особенно текстовыми файлами. Эти записи имеют фиксированное количество столбцов (19 колонок). Если запись разбивается, она становится неполной, и пролитые поля образуют незавершенную новую запись, как показано ниже.Неудачные записи в блокноте ++/UltraEdit

Records warped

Мне нужно ип-деформировать записи так, что они вписываются в их соответствующие столбцы разделённых точкой с запятой. Файлы могут иметь до 250 000 записей. более быстрый способ проверить/исправить это будет глубоко оценен.

спасибо.

+2

Ваш пример сломана. Кроме того, не могли бы вы объяснить, что вы подразумеваете под «деформированием»? – Spikeh

ответ

0

Обычно в Notepad ++ вы должны перейти в меню View и снять отметку с Word wrap.

Но с вашего скриншота, похоже, больше похоже на проблему с новыми символами, вставленными в ваши данные. Например, между строками 10 и 11 это выглядит так, как если бы новая строка была вставлена ​​в 18-й столбец. Перейдите к View>Show Symbol>Show All Characters, чтобы подтвердить эту гипотезу. Это также объясняет, почему у вас одинаковая проблема с обоими редакторами.

0

Форум UltraEdit содержит темы

Find lines in CSV file with less or more than X tabs within a line

How to find line breaks in fields of a CSV file and remove it?

, которые обсуждают эту общую проблему в CSV-файлов.

С помощью строки поиска регулярного выражения Perl ^((?!(?:[^;\r\n]*;){18}).*)\r*\n и с использованием \1 в качестве замены строки вы можете устранить разрывы строк на линиях с менее чем 18 точками с запятой (19 столбцов данных).

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

Пример:

a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;1 
8;19 
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
c1;2;3;4;5;6;7;8;9;1 
0;11;12;13;14;15;16;17;1 
8;19 
d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 

должен стать

a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
c1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 

и не

a1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
b1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 
c1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;1 
8;19d1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19 

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

С макросом UltraEdit можно зафиксировать все разрывы строк в строках данных автоматически.

Макрос код:

InsertMode 
ColumnModeOff 
HexOff 
Top 
PerlReOn 
Loop 0 
Find MatchCase RegExp "^((?!(?:[^;\r\n]*;){18}).*)\r*\n" 
Replace "\1" 
IfFound 
Key HOME 
Else 
ExitLoop 
EndIf 
EndLoop 
Top 
Смежные вопросы