在 Python 中解析内存中的 CSV 数据
当数据不在文件中时,有没有办法在Python中解析CSV数据?我将 CSV 数据存储在数据库中,并且想解析它。我正在寻找类似于 Ruby 的 CSV.parse 的东西。我知道 Python 有一个 CSV 类,但我在文档中看到的所有内容似乎都是处理文件而不是内存中的 CSV 数据。
(并且在数据进入数据库之前不能解析数据。)
(请不要告诉我不要将 CSV 数据存储在数据库中。就数据库而言,我知道我在做什么。 )
Is there a way to parse CSV data in Python when the data is not in a file? I'm storing CSV data in my database and I'd like to parse it. I'm looking for something analogous to Ruby's CSV.parse
. I know Python has a CSV
class but everything I've seen in the docs seems to deal with files as opposed to in-memory CSV data.
(And it's not an option to parse the data before it goes into the database.)
(And please don't tell me not to store the CSV data in the database. I know what I'm doing as far as the database goes.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
关于 python csv 模块的文件没有特殊区别。您可以使用 StringIO 将字符串包装为类似文件的对象。
There is no special distinction for files about the python csv module. You can use StringIO to wrap your strings as file-like objects.
这就是为什么你应该使用
cStringIO.StringIO
(Python 3.x中的io.StringIO
)而不是一些DIY组装:使用
guff.splitlines(True)<不推荐使用 /code>,因为它比
StringIO(guff)
更有可能导致任何阅读你代码的人都不知道它的作用。Here is why you should use
cStringIO.StringIO
(io.StringIO
in Python 3.x) instead of some DIY kludge:Using
guff.splitlines(True)
is not recommended as it has a far greater chance thanStringIO(guff)
that whoever is reading your code will not have a clue what it does.http://docs.python.org/library/csv.html
例如,如果您有字符串中的数据库内容,您可以像这样解析它
http://docs.python.org/library/csv.html
If you have e.g. the content from DB in a string you can parse it like
使用 stringio 模块,它允许您将字符串装饰为类似文件的对象。这样您就可以将
stringio
“文件”传递给 CSV 模块进行解析(或您可能使用的任何其他解析器)。Use the
stringio
module, which allows you to dress strings as file-like objects. That way you can pass astringio
"file" to the CSV module for parsing (or any other parser you may be using).