5

StringIO 是我们在从文本中读取 pandas 数据帧时使用的类文件字符串缓冲区对象,例如“如何从字符串创建 Pandas 数据帧?”

我们应该将这两个导入中的哪一个用于 StringIO(在 pandas 中)?这是一个长期存在的问题,四年多来从未得到解决。

  1. StringIO.StringIO(Python 2) / io.StringIO(Python 3)
    • 优点:更稳定的面向未来的代码,但迫使我们进行版本分叉,例如参见 EmilH 底部的代码。
  2. pandas.compat.StringIO

从标准(来自 EmilH)导入的版本 2/3 分叉代码:

import sys
if sys.version_info[0] < 3: 
    from StringIO import StringIO
else:
    from io import StringIO

# Note: but this is very much a poor-man's version of pandas.compat, which contains much much more

笔记:

4

2 回答 2

3

我知道这是一个老问题,但我在这里关注了面包屑,所以也许仍然值得回答。这不是完全确定的,但当前的 Pandas 文档建议使用内置StringIO方法而不是它自己的内部方法。

对于使用StringIO该类的示例,请确保from io import StringIO为 Python 3 导入它。

于 2021-08-11T11:02:53.637 回答
1

仅供参考,截至 pandas 0.25,StringIO已从pandas.compatPR #25954)中删除,因此您现在将看到:

from pandas.compat import StringIO

ImportError:无法从“pandas.compat”导入名称“StringIO”

这意味着唯一的答案是从模块导入io

于 2021-12-21T23:22:15.910 回答