Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
310 views
in Technique[技术] by (71.8m points)

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

I am new to python. I'm confused by the <class 'str'>. I got a str by using:

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

The type of 'response' is <class 'str'>, not <type 'str'>. When I try to manipulate this str in 'for loop':

for ID in response: 

The 'response' is read NOT by line, BUT by character. I intend to put every line of 'response' into individual element of a list. Now I have to write the response in a file and use 'open' to get a string of <type 'str'> that I can use in 'for loop'.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...