【发布时间】:2019-02-17 04:28:15
【问题描述】:
我有一个将内容对象读入熊猫数据框的函数。
import pandas as pd
from cStringIO import StringIO, InputType
def create_df(content):
assert content, "No content was provided, can't create dataframe"
if not isinstance(content, InputType):
content = StringIO(content)
content.seek(0)
return pd.read_csv(content)
但是我不断收到错误TypeError: StringIO() argument 1 must be string or buffer, not cStringIO.StringIO
我在函数内部的 StringIO() 转换之前检查了内容的传入类型,它的类型为 str。如果没有转换,我会收到 str 对象没有搜索功能的错误。知道这里有什么问题吗?
【问题讨论】:
-
InputType是cStringIO中定义的两种类型之一。大概你有一个OutputType实例。 -
奇怪,我将其更改为 OutputType 并且它起作用了。但是在我更改了代码中的某些内容之前,相同的函数一直在使用 InputType,但我无法弄清楚它是什么。谢谢
-
这是因为
StringIO('content')创建了InputType实例,而StringIO()(无参数)创建了OutputType实例。您需要测试两种类型。
标签: python python-2.7 pandas stringio cstringio