Python - print' object'信息

时间:2015-05-18 23:27:42

标签: python

当我做一个简单的for循环时,我有一个输出它的变量:

for filex in variable:

    print filex

# OUTPUT #

'proj1' (objectName 0x2267c4f0)
'proj2' (objectName 0x2267a770)
'proj3' (objectName 0x22679690)
'proj4' (objectName 0x2267d0d0)

# OUTPUT #

我只想在' proj1'等引号之间提取文字。但是在使用索引时出现了这个错误:

for filex in variable:

    print filex[0]

# OUTPUT #

  File "<string>", line 11, in <module>
TypeError: 'objectName' object does not support indexing

# OUTPUT #

*我在主机应用程序中使用python。

2 个答案:

答案 0 :(得分:2)

似乎import csv from collections import Counter # define a generator, that will yield you field after field # ignoring newlines: def iter_fields(filename): with open(filename, 'rb') as f: reader = csv.reader(f) for row in reader: for field in row: yield field # now use collections.Counter to count your values: counts = Counter(iter_fields('stackoverflow.csv')) print counts # output: # Counter({'item3': 2, 'item2': 2, 'item1': 1, # ' item1': 1, ' item2': 1, 'item4': 1}) 是自定义类的一个对象,它没有实现filex方法。

当你这样做时:

__getitem__

实际调用的是:

filex[0]

输出字符串filex.__getitem__(0) 可能是"'proj1' (objectName 0x2267c4f0)"filex.__str__的返回值。

如果是这样,您正在寻找的filex.__repr__字符串可以从'proj1'其他属性或方法中找到。

除此之外,您可以通过解析filex的返回值来破解您的方式,但这并不是非常强大,IMO。

答案 1 :(得分:1)

我建议你找出你想要的那个属性的名字, 例如如果是name,那么您可以直接使用存储filex.name的{​​{1}}来访问它

如果您不知道该属性是什么,可以使用'proj1'查看所有属性