ruby正则表达式删除额外的\n

ohh*_*hho 1 ruby regex

我有一个格式错误的.csv文件,这是由一些额外的\n.例如:

Name,Comment
"Peter","Good morning"
"Paul","How are you
"
"Mary","Fine"
Run Code Online (Sandbox Code Playgroud)

第二行以不需要的额外结束\n.

如何删除所有\n未引用双引号的尾部"(假设整个文件已经读入字符串)?

mu *_*ort 5

不要将整个内容读成字符串,使用1.9中的标准CSV解析器来读取它.如果你有pancakes.csv,那么,然后:

require 'csv'
data = CSV.open('pancakes.csv').map { |r| r.map(&:strip) }
# or
data = CSV.open('pancakes.csv').map { |r| r.map(&:chomp) }
Run Code Online (Sandbox Code Playgroud)

然后你会有这个data:

[
    ["Name", "Comment"],
    ["Peter", "Good morning"],
    ["Paul", "How are you"],
    ["Mary", "Fine"]
]
Run Code Online (Sandbox Code Playgroud)

因此,您可以非常简单地将您的数据清理干净并且很好地解析.如果您只需要为其他无法处理嵌入换行符的程序清理CSV,则可以使用CSV将其再次写回.