gpt4 book ai didi

python - 带有多字符分隔符的 python 中的 csv 阅读器

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:55 27 4
gpt4 key购买 nike

除了使用 csv 模块以流方式读取 python3 中的 csv 文件之外,还有其他选择吗?目前我的数据看起来像这样:

"field1"::"field2"::"field3"\x02\n
"1"::"hi\n"::"3"\x02\n
"8"::"ok"::"3"\x02\n

分隔符是两个字符,::(csv 模块只接受单个字符分隔符),行分隔符也包含两个字符,\x02\n。是否有任何 csvreader 可以在流模式下用于 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 库不适合该数据格式。您可以事先预先解析数据。例如,以下方法应该有效:

from io import StringIO
import csv

s = '''"field1"::"field2"::"field3"\x02\n\n"1"::"hi\n"::"3"\x02\n\n"8"::"ok"::"3"\x02\n'''

def csv_reader_alt(source):
return csv.reader((line.replace('\x02', '').replace('::', ':') for line in source), delimiter=':')

for row in csv_reader_alt(StringIO(s)):
if row:
print(row)

为您提供以下输出:

['field1', 'field2', 'field3']
['1', 'hi\n', '3']
['8', 'ok', '3']

关于python - 带有多字符分隔符的 python 中的 csv 阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com