Python CSV模块 - 如何避免分隔符问题?

1 投票
2 回答
741 浏览
提问于 2025-04-18 17:46

我正在使用Python的CSV模块来输出一系列解析过的文本文件,并附带一些元数据。我使用了csv.writer模块,但没有指定特殊的分隔符,所以我假设它是用逗号来分隔的。文本和元数据中都有很多逗号,因此我原本以为在文档的行中会有比标题行多得多的列。

让我感到惊讶的是,当我在Excel中打开输出的文件时,一切看起来都非常正确。Excel是怎么知道怎么正确分隔这些内容的呢?它是怎么分辨哪些逗号是文本中的逗号,哪些是分隔符的?

相关问题:人们通常会用CSV来保存文本文件吗?这是一种标准做法吗?相比于JSON或者创建SQLite数据库,CSV在长期可持续性和易于理解方面似乎都不太好。

2 个回答

1

你需要查看一下你创建的CSV文件的实际内容,你会发现有办法把文本用引号括起来。这样可以区分分隔符和文本值内部的字符。

可以查阅csv模块的文档,它也解释了这些细节。

1

打开一个文本编辑器,比如Sublime,看看输出的CSV文件,你会发现文本中的逗号被用一种特殊的方式处理了,通常是用双引号把它们包起来。这种处理方式在CSV的规范文件里有说明,具体可以查看这里:https://www.rfc-editor.org/rfc/rfc4180

至于CSV文件的使用,其实它们现在仍然非常常见,主要是因为很多老旧系统还在用它们,而且对于大多数任务来说,处理CSV文件既快速又简单。

撰写回答