簡體   English   中英

在ruby中解析csv文件時,如何忽略具有唯一字符串的行

[英]How do i ignore rows with unique string while parsing a csv file in ruby

我想忽略所有

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,,,,,,,,

給定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

您可能希望正則表達式不那么具體。 例如,如果要刪除TopLevel行之后的ANY AddHost行,則第一個正則表達式為:

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

完成gsub對文件的壓縮后,將結果照常傳遞給CSV解析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM