Как игнорировать строки с уникальной строкой при разборе CSV-файла в Ruby - PullRequest
0 голосов
/ 04 июня 2010

я хочу игнорировать ВСЕ

TopLevel, Result,,,,,,,,
AddHost,10.1.3.1,,,,,,,,

и

Flush,,,,,,,,,
AddHost,10.1.3.4,,,,,,,,

от

TopLevel, Result,,,,,,,,
AddHost,10.1.3.1,,,,,,,,
Add,10.1.3.1,43172
Add,10.1.3.1,44172
Add,10.1.3.1,4172
Add,10.1.3.1,432
Add,10.1.3.1,435472
Flush,,,,,,,,,
AddHost,10.1.3.4,,,,,,,,

1 Ответ

0 голосов
/ 05 июня 2010

Учитывая содержимое файла CSV:

s = "TopLevel, Result,,,,,,,,
AddHost,10.1.3.1,,,,,,,,
Add,10.1.3.1,43172
Add,10.1.3.1,44172
Add,10.1.3.1,4172
Add,10.1.3.1,432
Add,10.1.3.1,435472
Flush,,,,,,,,,
AddHost,10.1.3.4,,,,,,,,
"

gsub удалит ошибочные строки:

s = s.gsub(/TopLevel, Result,,,,,,,,\nAddHost,10.1.3.1,,,,,,,,\n/, '')
s = s.gsub(/Flush,,,,,,,,,\nAddHost,10.1.3.4,,,,,,,,\n/, '')
puts s
# => Add,10.1.3.1,43172
# => Add,10.1.3.1,44172
# => Add,10.1.3.1,4172
# => Add,10.1.3.1,432
# => Add,10.1.3.1,435472

Возможно, вы хотите, чтобы регулярные выражения были менее конкретными, чем это. Например, если вы хотите удалить ЛЮБУЮ строку AddHost, следующую за строкой TopLevel, то первым регулярным выражением будет:

/TopLevel, Result,,,,,,,,\nAddHost.*\n/

Когда gsub закончит копирование файла, передайте результаты в анализатор CSV как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...