使用 python 脚本删除一个逗号

Posted

技术标签:

【中文标题】使用 python 脚本删除一个逗号【英文标题】:remove one comma using a python script 【发布时间】:2011-06-28 14:40:26 【问题描述】:

我有一个 csv 文件,其中一行如下所示:

,,,,,,,,,,

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

,,,,,,,,,

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

谢谢大家!

【问题讨论】:

您是总是只删除逗号,还是试图删除 CSV 中的最后一个字段? 当您希望删除逗号时,尝试更简洁地描述一下,即是否有多个逗号您正在寻找,只是少了 1 个逗号,等等。 我正在尝试删除我的问题中描述的最后一个逗号。这个数字不必是第 10 个,这只是一个例子。是的,我正在寻找少一个逗号 【参考方案1】:

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

第 n 到第 m 行也一样: :n,ms/,$//

整个文件也一样: :%s/,$//

【讨论】:

+1 仅用于正则表达式。这假定逗号始终是行中的最后一个字符(无空格),这应该是可以接受的。【参考方案2】:

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

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)

【讨论】:

您可以通过使用 ',' * n 生成具有 n 个逗号的字符串来提高代码的可读性。像 ',' * 10. 是的,计算逗号很烦人,但我的印象是在完成这种操作后您需要加入字符串(我必须一直兼顾 .Net 和 python)。根据您的改进进行了修改。【参考方案3】:

我会使用:

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

【讨论】:

其实这里可以使用和vim中的一样的,所以sed -i 's/,$//' file.csv很容易只引用最后一个逗号。 也许我理解错了,我不想用九个逗号改变一行。【参考方案4】:

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

:%normal $F,D

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

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

此外,这可以用于范围(从第 1 行到第 20 行):

:1,20normal $F,D

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

:%normal $X

【讨论】:

以上是关于使用 python 脚本删除一个逗号的主要内容,如果未能解决你的问题,请参考以下文章

如何删除逗号并使用按钮刷新 JavaScript?

使用 Python 从 CSV 中删除不需要的逗号

如何从 Python itertools 输出中删除字符串引号、逗号和括号?

添加分隔符并删除逗号

从使用 foreach 循环构造的 JSON 中删除最后一个逗号 [重复]

如何从 Python 中的数据中删除多余的逗号