vim 使用python脚本删除一个逗号

e7arh2l6  于 2022-11-11  发布在  Python
关注(0)|答案(4)|浏览(184)

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

,,,,,,,,,,

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

,,,,,,,,,

有没有人有过处理这样的案例的经验?我也使用VIM文本编辑器。所以,任何使用Python脚本或使用VIM的文本编辑命令的帮助都将不胜感激。

bvpmtnay

bvpmtnay1#

正在删除vim中当前行的最后一个逗号::s/,$//
第n行到第m行的情况相同::n,ms/,$//
整个文件相同::%s/,$//

wqsoz72f

wqsoz72f2#

这将在最简单的情况下做到这一点,一旦你更新了你的问题与你正在寻找的,我会更新代码。

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)
dz6r00yl

dz6r00yl3#

我会用途:

sed -i 's/,$//' file.csv
u5i3ibmn

u5i3ibmn4#

我真的很喜欢VIM normal命令。所以如果你想从这个CSV文件中删除最后一个“列”,我会这样做:

:%normal $F,D

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

  1. $-转到行的末尾;
  2. F,-将光标移动到此行的预览逗号处;
  3. D-从光标处删除到行尾;
    此外,它还可用于范围(从第1行到第20行):
:1,20normal $F,D

但如果只有许多逗号,而且逗号之间没有数据,则可以简单地执行以下操作:

:%normal $X

相关问题