尝试将对象转换为字符串时,TypeError列表对象不可调用

时间:2014-07-08 16:41:29

标签: python string csv

使用python,我导入了一个带有名称列表的csv文件。我想通过删除任何尾随的;,?字符来清理数据。我在python中发现了strip函数并决定使用它。我注意到的是它没有对文本做任何事情。我注意到python不会将其视为字符串。当我运行item is str时,它将返回false。当我尝试使用str(item)时,会说'list'对象不可调用。

1 个答案:

答案 0 :(得分:5)

您已将str反弹到列表对象。不要这样做,你掩盖了内置类型:

>>> str(42)
'42'
>>> str = ['foo', 'bar']
>>> str(42)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

请注意,测试对象类型的正确方法是使用isinstance()

isinstance(item, str)

虽然在调试会话中,您也可以使用type()来内省对象,或使用repr()获取有用的Python文字表示(如果可用,否则会给出适合于调试的表示) :

>>> str = ['foo', 'bar']
>>> type(str)
<type 'list'>
>>> print repr(str)
['foo', 'bar']
>>> del str
>>> type(str)
<type 'type'>
>>> print repr(str)
<type 'str'>