gpt4 book ai didi

Python CSV 阅读器未按我预期的方式读取 CSV 数据

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:11 25 4
gpt4 key购买 nike

我正在尝试将一些 CSV 数据读入数组。我可能可以解释我想用 Python 比用英语做得更好的地方:

>>> line = ImportFile.objects.all().reverse()[0].file.split("\n")[0]
>>> line
'"007147","John Smith","100 Farley Ln","","Berlin NH 03570","Berlin","NH",2450000,"John",24643203,3454,"E","",2345071,1201,"N",15465,"I",.00,20102456,945610,20247320,1245712,"0T",.00100000,"",.00,.00,780,"D","000",.00,0\r'
>>> s = cStringIO.StringIO()
>>> s
<cStringIO.StringO object at 0x9ab1960>
>>> s.write(line)
>>> r = csv.reader(s)
>>> r
<_csv.reader object at 0x9aa217c>
>>> [line for line in r]
[]

如您所见,CSV 数据始于内存,而不是文件。我希望我的读者有一些数据,但事实并非如此。我做错了什么?

最佳答案

您以错误的方式使用了 StringIO。尝试

s = cStringIO.StringIO(line)
r = csv.reader(s)
next(r)
# "['007147', 'John Smith', '100 Farley Ln', '', 'Berlin NH 03570', 'Berlin', 'NH', '2450000', 'John', '24643203', '3454', 'E', '', '2345071', '1201', 'N', '15465', 'I', '.00', '20102456', '945610', '20247320', '1245712', '0T', '.00100000', '', '.00', '.00', '780', 'D', '000', '.00', '0']"

结果应该是你所期望的。

编辑:更详细地解释:写入StringIO实例后,文件指针将指向内容的末尾。这是您希望后续 write() 调用写入新内容的地方。但这也意味着 read() 调用不会返回任何内容。您需要调用 s.reset()s.seek(0) 将位置重置为开头,或初始化 StringIO具有所需的内容。

关于Python CSV 阅读器未按我预期的方式读取 CSV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4856172/

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