【问题标题】:stripping singular / from a csv file从 csv 文件中剥离单数 /
【发布时间】:2011-09-09 00:24:07
【问题描述】:

我有一个 csv 文件,其中有几个区域 / 没有进行任何操作,并且没有进行任何我想删除的操作。问题是,我在文件中还有其他项目,其中包含我不想删除的 /。

一个例子:

/abc, /, akaksdhfaiwe
/, /foo, /bar

我想成为:

/abc,, akaksdhfaiwe
, /foo, /bar

我该怎么做?我不能使用 gsub('^/', '') 因为它会去掉 /abc /foo /bar。而对于我的生活,我似乎无法找到一个“结束”。我希望 \Z 能工作,但没有运气。

有接受者吗?

我一直在使用 fastCSV 进行很多操作,到目前为止效果非常好。

【问题讨论】:

  • 哦,你想留在 ruby​​....(由于某种原因无法编辑上述评论)

标签: ruby csv fastercsv stripping


【解决方案1】:

如果您的文件不是那么大,那么您可以在清理它的同时将其放入内存中,然后再次将其写出来:

clean = [ ]
CSV.open(your_csv).each { |r| csv << r.map { |e| e.sub(/^\s*\/$/, '') } }
out = CSV.open(your_csv, 'wb')
clean.each { |r| out << r }  
out.close

如果您有一个无法一次全部放入内存的超大 CSV 文件:

out = CSV.open('tempfile.csv', 'wb')
CSV.open(your_csv).each { |r| out << r.map { |e| e.sub(/^\s*\/$/, '') } }
out.close
File.rename('tempfile.csv', your_csv)

两者都应该转这个:

/abc, /, akaksdhfaiwe
/, /foo, /bar

进入

/abc,"", akaksdhfaiwe
"", /foo, /bar

【讨论】:

  • 这是一个巨大的文件。我的意思是,巨大的。所以读入记忆是不行的。但是第二个。我会试一试。谢谢穆。
【解决方案2】:

使用 ruby​​ 你可以做到:

"/asdf /, /fdsa".gsub("/,", ",")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2022-01-18
    • 2011-06-04
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多