¿Cuál es la diferencia entre y

Soy nuevo en Python. Estoy confundido por la . Tengo una str utilizando:

 response = urllib.request.urlopen(req).read().decode() 

El tipo de ‘respuesta’ es , no . Cuando bash manipular esta cadena en ‘for loop’:

 for ID in response: 

La ‘respuesta’ se lee NO por línea, PERO por carácter. Tengo la intención de poner cada línea de “respuesta” en un elemento individual de una lista. Ahora tengo que escribir la respuesta en un archivo y usar ‘abrir’ para obtener una cadena de que puedo usar en ‘for loop’.

Según lo mencionado por los comentaristas. En python3:

 >>>st = 'Hello Stack!' >>>type(st)  

Pero en python2:

 >>>st = 'Hello Stack!' >>>type(st)  

Así que el comportamiento que estás viendo es totalmente esperado. En cuanto al bucle sobre una cadena, un bucle for sobre una cadena se repetirá sobre la cadena de caracteres por carácter. Si desea iterar sobre cada línea en la cadena, generalmente hace algo como dividir en \n o alguna expresión regular diseñada para dividir en los separadores de línea en la respuesta de la URL. A continuación se muestra un bucle simple para la lista resultante de la split

 response = urllib.request.urlopen(req).read().decode() lines = response.split('\n') for x in lines: st = x.strip() # do some processing on st 

No hay diferencia. Python cambió la representación de texto de los objetos de type entre python 2 (los tipos se escriben así: . ) Y python 3 (los tipos se escriben así: . ). En ambos python 2 y 3, el tipo del objeto de tipo es, um, escriba:

python 2

 >>> type(type('a'))  

python 3

 >>> type(type('a'))  

Y esa es la razón del cambio … la representación de la cadena deja en claro que el tipo es una clase.

En cuanto al rest de tu problema,

 for ID in response: 

response es una cadena y su enumeración da los caracteres de la cadena. Dependiendo del tipo de respuesta que desee utilizar, HTML, JSON u otro analizador para convertirlo en objetos de python.