我有一个CSV文件,其中一行看起来像这样:
,,,,,,,,,,
这是10个逗号。我希望只删除最后一个(即第10个)逗号,以便该行变为:
,,,,,,,,,
有没有人有处理这种情况的经验?我也使用vim文本编辑器。因此,如果有任何使用python脚本或使用vim进行文本编辑命令的帮助,将不胜感激。
我有一个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
sed -i 's/,$//' file.csv
可以轻松地只引用最后一个逗号。 - Piotr Kalinowski我真的很喜欢VIM正常命令。所以,如果你想从这个CSV文件中删除最后一列,我会这样做:
:%normal $F,D
%
)中执行以下过程(normal
):
$
- 跳到行尾;F,
- 将光标移动到此行中以前的逗号;D
- 从光标处删除直到行尾;:1,20normal $F,D
但是如果只有很多逗号而没有它们之间的数据,你可以简单地执行以下操作:
:%normal $X