我有一个 csv 文件,其中一行看起来像这样:
,,,,,,,,,,
那是10个逗号。我希望只删除最后一个(即第 10 个)逗号,以便该行更改为:
,,,,,,,,,
有没有人处理过这样的案子?我也使用 vim 文本编辑器。因此,任何使用 python 脚本或使用 vim 的文本编辑命令的帮助将不胜感激。
多谢你们!
在 vim 中删除当前行中的最后一个逗号:
:s/,$//
第 n 到 m 行也是如此:
:n,ms/,$//
整个文件相同:
:%s/,$//
这将在最简单的情况下完成,一旦你用你正在寻找的内容更新了你的问题,我将更新代码。
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)
我会使用:
sed -i 's/,$//' file.csv
我真的很喜欢 VIM 普通命令。因此,如果您想从此 CSV 文件中删除最后一个“列”,我会这样做:
:%normal $F,D
换句话说,在该文件的每一行 ( %
) 中执行以下过程 ( normal
):
$
- 走到行尾;F,
- 将光标移动到该行的预览逗号处;D
- 从光标处删除直到行尾;此外,这可以与范围一起使用(从第 1 行到第 20 行):
:1,20normal $F,D
但是如果只有很多逗号之间没有数据,你可以简单地这样做:
:%normal $X