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

184
Visualizações
Comportamiento de str.isdigit() al manejar cadenas

Suponiendo lo siguiente:

 >>> square = '²' # Superscript Two (Unicode U+00B2) >>> cube = '³' # Superscript Three (Unicode U+00B3)

Curiosamente:

 >>> square.isdigit() True >>> cube.isdigit() True

OK, vamos a convertir esos "dígitos" a enteros:

 >>> int(square) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '²' >>> int(cube) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '³'

¡Ups!

¿Alguien podría explicar qué comportamiento debo esperar del método str.isdigit() al manejar cadenas?

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

0

str.isdigit no pretende estar relacionado con la capacidad de análisis como int . Está informando una propiedad Unicode simple, es un carácter decimal o un dígito de algún tipo:

str.isdigit()

Devuelve True si todos los caracteres de la cadena son dígitos y hay al menos un carácter, False en caso contrario. Los dígitos incluyen caracteres decimales y dígitos que necesitan un tratamiento especial, como los dígitos en superíndice de compatibilidad. Esto cubre dígitos que no se pueden usar para formar números en base 10, como los números de Kharosthi. Formalmente, un dígito es un carácter que tiene el valor de propiedad Numeric_Type=Digit o Numeric_Type=Decimal.

En resumen, str.isdigit es completamente inútil para detectar números válidos. La solución correcta para verificar si una cadena dada es un entero legal es llamar a int y capturar el ValueError si no es un entero legal. Cualquier otra cosa que haga será (mal) reinventar las mismas pruebas que realiza el código de análisis real en int() , entonces, ¿por qué no dejar que haga el trabajo en primer lugar?

Nota al margen: está utilizando el término "utf-8" incorrectamente. UTF-8 es una forma específica de codificar Unicode y solo se aplica a datos binarios sin procesar. El str de Python es un tipo de texto Unicode "idealizado"; no tiene codificación (debajo del capó, se almacena codificado como uno de ASCII, latin-1, UCS-2, UCS-4 y posiblemente también UTF-8, pero nada de eso es visible en la capa de Python fuera de las mediciones indirectas como sys.getsizeof , que solo sugiere la codificación subyacente al permitirle ver cuánta memoria consume la cadena). Los caracteres de los que está hablando son caracteres Unicode simples por encima del rango ASCII, no son específicamente UTF-8.

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