gpt4 book ai didi

python - 是否有一组简单的脚本来操作某处可用的 csv 文件?

转载 作者:行者123 更新时间:2023-11-28 20:27:33 24 4
gpt4 key购买 nike

我正在寻找一些允许操作通用 csv 文件的脚本...

通常是这样的:

  1. 添加行 FILENAME INSERT_ROW
  2. 获取行 FILENAME GREP_ROW
  3. 替换行 FILENAME GREP_ROW INSERT_ROW
  4. 删除行 FILENAME GREP_ROW

在哪里

  • FILENAME csv 文件的名称,第一行包含标题,""用于分隔可能包含','的字符串
  • GREP_ROW 成对的字符串 field1=value1[,fieldN=valueN,...] 用于根据 csv 文件中的字段值识别行
  • INSERT_ROW 成对的字符串 field1=value1[,fieldN=valueN,...] 用于替换(或添加)行的字段。

最好在 python 中使用 csv 包...理想情况下,利用 python 将每个字段关联为一个变量,并允许更高级的 GREP 规则,如 fieldN > XYZ ...

最佳答案

Perl 具有源自 unix 哲学的就地编辑传统。

例如,我们可以编写如下简单的 add-row-by-num.pl 命令:

#!/usr/bin/perl -pi
BEGIN { $ln=shift; $line=shift; }
print "$line\n" if $ln==$.;
close ARGV if eof;

将第三行替换为 $_="$line\n"if $ln==$.; 以替换行。删除 $line=shift; 并将第三行替换为 $_ = ""if $ln==$.; 以删除行。

我们可以编写一个简单的 add-row-by-regex.pl 命令如下:

#!/usr/bin/perl -pi
BEGIN { $regex=shift; $line=shift; }
print "$line\n" if /$regex/;

或者简单的 perl 命令 perl -pi -e 'print "LINE\n"if/REGEX/';文件。同样,我们可以将 print $line 替换为 $_="$line\n"$_ = "" 以进行替换或删除, 分别。

我们不再需要 close ARGV if eof; 行,因为我们不需要在处理完每个文件后重置 $. 计数器。

普通的 unix grep 实用程序是否不够用?回想一下正则表达式 (PATEN){n} 恰好匹配 PATEN n 次,即 (\s*\S+\s*,){6}{\s*777\s*,) 要求第 7 列为 777。

甚至还有一个 perl 正则表达式可以将您的 fieldN=value 对转换为这个正则表达式,尽管我会使用 splitmap,然后加入我自己。

顺便说一下,File::Inplace为文件句柄提供就地编辑。

关于python - 是否有一组简单的脚本来操作某处可用的 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com