【发布时间】:2019-07-08 01:05:12
【问题描述】:
是否有替代使用csv 模块以流方式读取python3 中的csv 文件的替代方法?目前我的数据看起来像这样:
"field1"::"field2"::"field3"\x02\n
"1"::"hi\n"::"3"\x02\n
"8"::"ok"::"3"\x02\n
分隔符是两个字符,::(csv 模块只接受一个字符分隔符)并且行分隔符也包含两个字符,\x02\n。是否有任何 csvreaders 可以在流模式下用于 python 并且能够支持这一点?
这是我正在尝试做的一个示例:
>>> import csv
>>> s = ''''"field1"::"field2"::"field3"\x02\n\n"1"::"hi\n"::"3"\x02\n\n"8"::"ok"::"3"\x02\n'''
>>> csvreader=csv.reader(s, delimiter='::', lineterminator='\x02\n')
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: "delimiter" must be a 1-character string
加载 pandas 只是为了读取这个 csv 似乎有点矫枉过正 x 100,所以我想看看还有什么其他选择。
【问题讨论】:
-
如果你能够控制这个 csv 的格式,我会切换到单个字符和不同的行分隔符,但我相信只使用 open 和 re 就足够了。
-
你是说你想在同一个进程中用两个分隔符分隔数据吗?还有,你在用
csv.reader吗?您能否发布您当前尝试用于清理此数据的代码部分? -
这是一个相关的 Q/A,但需要 pandas——对于这样一个小功能来说,这似乎是一个巨大的依赖:stackoverflow.com/questions/31194669/…
-
@BrianPeterson 同意——还有其他选择吗?
-
@Jaba
re变得非常棘手 - 使用转义字符、引号字符等。我宁愿不尝试也不这样做。
标签: python python-3.x csv