pyparsing用分号而不是逗号解析csv文件

Posted

技术标签:

【中文标题】pyparsing用分号而不是逗号解析csv文件【英文标题】:pyparsing parsing csv files with semi-colon instead of comma 【发布时间】:2013-10-22 09:57:16 【问题描述】:

在欧洲大陆,csv 文件用分号分隔,因为数字中有 , 而不是 .所以,我正在尝试编写一个与 commaSeparatedList 相同但带有 ; 的分号分隔列表。而不是 ,:

_semicolonsepitem = Combine(OneOrMore(Word(printables, excludeChars=';') +
                             Optional( Word(" \t") +
                                       ~Literal(";") + ~LineEnd() ) ) ).streamline().setName("semicolonItem")
semicolonSeparatedList = delimitedList( Optional( quotedString.copy() | _semicolonsepitem, default="") ).setName("semicolonSeparatedList")

但是解析:

Name;Ref;Address 

结果

['Name'] 

而不是

['Name', 'Ref', 'Address']

谁能帮忙?

【问题讨论】:

很高兴您能够自己解决这个问题 - 我希望 pyparsing 在您的 Python 工具包中找到一席之地。 【参考方案1】:

你试过python中的csv module吗?

在那里,您可以轻松指定分隔符。

import csv
with open('eggs.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')

在 Birei 的评论后编辑:我只是从 docs python 页面中举例,您可以输入任何您想要的内容作为 csv 阅读器的分隔符: '' ',' ';' '一个'

【讨论】:

我想delimiter 中有错字。这是一个分号。 csv 模块有一个我无法解决的问题。它不能同时使用 "" 和 '' 值作为引号字符,并且用户倾向于执行 O'Neill 或 "secon'time" 或 'tag1' 之类的操作,并且它需要与所有值一起使用。这就是我选择 pyparser 的原因,因为它适用于所有人。

以上是关于pyparsing用分号而不是逗号解析csv文件的主要内容,如果未能解决你的问题,请参考以下文章

iOS-解析读取CSV文件,解析excel文件

Pandas read_csv 用字符串“nan”填充空值,而不是解析日期

如何以编程方式猜测 CSV 文件是逗号还是分号分隔

Python解析csv文件 - 用冒号替换逗号

Clojure CSV 解析引号中的逗号

VBS怎么往CSV文件中写数据