iterkeys iteritems python python-2.7 python-3.x iterator

iteritems - iterkeys python 3



Cómo traducir este código de Python 2.7 a Python 3.5 para arreglarlo-> AttributeError: el objeto ''_io.TextIOWrapper'' no tiene atributo ''next'' (1)

Estoy usando Python 3.5 pero este libro enseña 2.7 (me gana por qué en 2016)

Aprendizaje de análisis predictivo con Python por Ashish Kumar 15 de febrero de 2016

>>> data=open(filename,''r'') >>> cols=data.next().strip().split('','') Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> cols=data.next().strip().split('','') AttributeError: ''_io.TextIOWrapper'' object has no attribute ''next'' >>>

He leído este AttributeError: el objeto ''_io.TextIOWrapper'' no tiene atributo ''next'' python y todavía no sé cómo hacerlo funcionar en el shell de Python 3.5 GUI.

Hasta ahora, entiendo que para Python 3.5 tengo que usar .__next__ ; para Python 2.7 .next .


Use la función next() en los iteradores:

cols = next(data).strip().split('','')

Esto es compatible en todas las versiones de Python.

De hecho, puede cambiar .next() por .__next__() , pero es mejor usar la función estándar aquí, del mismo modo que usaría len(obj) lugar de llamar obj.__len__() . Los métodos de doble guión bajo son ganchos usados ​​por Python, su código debe usar las API estándar que pueden o no llamar a esos ganchos. Esto es especialmente cierto aquí, donde cambió el nombre del gancho.