Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!