[英]How do i ignore line breaks in csv file with ruby but keep a pretty source file?
[英]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.