Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
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'.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

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.

over 4 years ago · Santiago Trujillo Relatório

0

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
over 4 years ago · Santiago Trujillo Relatório

0

In case you have the same confusing I got in Jupyter

Using type("hi") will give you str.

While using print(type('hi')) will give you <class 'str'> Anyway, both are the same!

enter image description here

#python3

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda