小编典典

如何使用“”读取CSV行?

python

琐碎的CSV行可以使用字符串分割功能分割。但是有些行可能有",例如

"good,morning", 100, 300, "1998,5,3"

因此,直接使用字符串拆分将无法解决问题。

我的解决方案是先使用来分割行,,然后使用组合字符串",然后再在字符串的开头或结尾进行组合。

解决此问题的最佳做法是什么?

我对此是否有Python或F#代码段感兴趣。

编辑: 我对实现细节更感兴趣,而不是使用库。


阅读 154

收藏
2021-01-16

共1个答案

小编典典

Python中有一个csv模块,可以处理此问题。

编辑 :此任务属于“构建词法分析器”类别。完成此类任务的标准方法是构建状态机(或使用将为您完成任务的lexer库/框架)。

用于此任务的状态机可能仅需​​要两个状态:

  • 最初的一个,它读取除逗号和换行符以外的所有字符作为字段的一部分(例外:前导和尾随空格),逗号作为字段分隔符,换行符作为记录分隔符。当遇到开盘报价时,它进入
  • 读引号字段状态,其中不包括引号在内的每个字符(包括逗号和换行符)都被视为字段的一部分,引号后没有引号意味着读引号字段的结尾(返回初始状态),后跟引号用引号将其视为单引号(转义引号)。

顺便说一下,您的串联解决方案将在"Field1","Field2"或上中断"Field1"",""Field2"

2021-01-16