使用 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 脚本删除一个逗号的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Python itertools 输出中删除字符串引号、逗号和括号?