What is the difference between <class 'str'> and <type 'str'>

旧城冷巷雨未停 提交于 2019-12-01 03:57:51

As mentioned by the commenters. In python3:

>>>st = 'Hello Stack!'
>>>type(st)
<class 'str'>

But in python2:

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

So the behavior that you are seeing is entirely expected. As to looping over a string, a for loop over a string will iterate over the string character by character. If you want to iterate over each line in the string, you usually do something like split on \n or some regex designed to split on the line separators in the URL response. Below is a simple for loop over the list resulting from split

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

There is no difference. Python changed the text representation of type objects between python 2 (Types are written like this: <type 'int'>.) and python 3 (Types are written like this: <class 'int'>.). In both python 2 and 3, the type of the type object is, um, type:

python 2

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

python 3

>>> type(type('a'))
<class 'type'>

And that's the reason for the change... the string representation makes it clear that the type is a class.

As for the rest of your problem,

for ID in response:

response is a string and enumerating it gives the characters in the string. Depending on the type of response you may want to use and HTML, JSON or other parser to turn it into python objects.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!