0

常见问题解答说这是主题:

   SOFTWARE TOOLS COMMONLY USED BY PROGRAMMERS

所以我希望它不会关闭!我上次问的时候,它被关闭为题外话。

编辑:涉及 Excel 的建议答案将不起作用,因为Excel 在 IN 的过程中破坏了制表符分隔的文件。我没有用 Python 编程,据说那里的 Python 实用程序不能处理带有嵌入式引号和逗号的字符串。我需要一些理解 RFC 4180 的东西。

我需要一个可以导出为标准引号逗号分隔格式的实用程序或文本编辑器插件。我不想自己写,因为我还有其他更紧迫的代码要写。

这种格式(几十年来的标准 CSV 变体)在字符串周围加上双引号,但不考虑数字,它用逗号分隔字段,并允许在数据中使用逗号(这就是引用字符串的原因)。

最新版本的 Excel 不会在字符串周围添加双引号;旧版本做到了。

如果您知道程序员使用的软件工具可以从容地执行此任务,请告知。

4

1 回答 1

0

您可以使用该sed工具来完成此操作。给定您的示例,假设管道是选项卡:

John|McDougal|"Mac"|123 Main St|Princeton|NJ|08543||100.88|20130309|骑自行车,远足

和你想要的输出:*

"John","McDougal",""Mac""","123 Main St","Princeton","NJ","08540","100.88","","20130309","骑自行车, 远足"

这可以通过以下方式完成:

  • 替换"""
  • 用引号括起来的逗号替换制表符
  • 用引号包裹每一行
  • 修剪尾随空行

使用sed,只需这样做:

sed 's/"/""/g; s/\t/","/g; s/^\|$/"/g; /^"$/d' < in.tsv > out.csv

GnuWin 项目在这里sed为 Windows 维护一个端口。

* 我认为你需要"""Mac"""而不是""Mac""如上所述。

于 2013-03-10T20:10:28.913 回答