4

我有一个 csv 文件,其中一行看起来像这样:

,,,,,,,,,,

那是10个逗号。我希望只删除最后一个(即第 10 个)逗号,以便该行更改为:

,,,,,,,,,

有没有人处理过这样的案子?我也使用 vim 文本编辑器。因此,任何使用 python 脚本或使用 vim 的文本编辑命令的帮助将不胜感激。

多谢你们!

4

4 回答 4

10

在 vim 中删除当前行中的最后一个逗号: :s/,$//

第 n 到 m 行也是如此: :n,ms/,$//

整个文件相同: :%s/,$//

于 2011-06-28T14:56:50.397 回答
3

这将在最简单的情况下完成,一旦你用你正在寻找的内容更新了你的问题,我将更新代码。

commas = ",,,,,,,,,,,"
print commas.replace(","*10, ","*9)

如果您想删除任何给定行上的最后一个逗号,您可以执行以下操作:

import re
commas = """,,,,,,,,,,
            ,,,,,,,,,,"""
print re.sub(r',$', '', commas, re.MULTILINE)

如果,在任何文件中,你想取一行只有 10 个逗号并将其设为 9 个逗号:

import re
commas = ",,,,,,,,,,\n,,,,,,,,,,\n,,,,,,,,,,"
print re.sub(r'^,{10}$', ','*9, commas, re.MULTILINE)
于 2011-06-28T14:45:29.583 回答
2

我会使用:

sed -i 's/,$//' file.csv
于 2011-06-28T14:57:43.017 回答
1

我真的很喜欢 VIM 普通命令。因此,如果您想从此 CSV 文件中删除最后一个“列”,我会这样做:

:%normal $F,D

换句话说,在该文件的每一行 ( %) 中执行以下过程 ( normal):

  1. $- 走到行尾;
  2. F,- 将光标移动到该行的预览逗号处;
  3. D- 从光标处删除直到行尾;

此外,这可以与范围一起使用(从第 1 行到第 20 行):

:1,20normal $F,D

但是如果只有很多逗号之间没有数据,你可以简单地这样做:

:%normal $X
于 2011-07-01T20:16:01.417 回答