una separar saber reemplazar por minusculas metodos mayusculas mayuscula letra funciones convertir contar comparar caracteres caracter cadenas python string unicode uppercase lowercase

separar - reemplazar caracteres en python



¿Cómo minúsculas una cadena en Python? (6)

¿Cómo convertir cadenas a minúsculas en Python?

¿Hay alguna forma de convertir una cadena completa ingresada por el usuario de mayúsculas, o incluso mayúsculas a minúsculas?

Ej. Kilómetros -> kilómetros

La forma canónica de Pythonic de hacer esto es

>>> ''Kilometers''.lower() ''kilometers''

Sin embargo, si el propósito es hacer una coincidencia que no distinga entre mayúsculas y minúsculas, debe usar el plegado de mayúsculas y minúsculas:

>>> ''Kilometers''.casefold() ''kilometers''

Este es el por qué:

>>> "Maße".casefold() ''masse'' >>> "Maße".lower() ''maße'' >>> "MASSE" == "Maße" False >>> "MASSE".lower() == "Maße".lower() False >>> "MASSE".casefold() == "Maße".casefold() True

Este es un método str en Python 3, pero en Python 2, querrá mirar PyICU o py2casefold; varias respuestas abordan esto aquí .

Unicode Python 3

Python 3 maneja Unicode como cadenas regulares:

>>> string = ''Километр'' >>> string ''Километр'' >>> string.lower() ''километр''

Unicode Python 2

Pero Python 2 no lo hace, pegado en un shell, codifica el literal como una cadena de bytes, usando utf-8 .

Y lower no asigna ningún cambio que los objetos Unicode nativos conocerían, por lo que obtenemos la misma cadena.

>>> string = ''Километр'' >>> string ''/xd0/x9a/xd0/xb8/xd0/xbb/xd0/xbe/xd0/xbc/xd0/xb5/xd1/x82/xd1/x80'' >>> string.lower() ''/xd0/x9a/xd0/xb8/xd0/xbb/xd0/xbe/xd0/xbc/xd0/xb5/xd1/x82/xd1/x80'' >>> print string.lower() Километр

En los scripts, Python se opondrá a que los bytes que no son ascii (a partir de Python 2.5 y Python 2.4) estén en una cadena sin codificación, ya que la codificación deseada sería ambigua. Para más sobre eso, vea el Cómo hacer con Unicode en los docs y PEP 263

Usa literales Unicode, no literales str

Entonces, necesitamos una cadena unicode para manejar esta conversión, que se logra fácilmente con un literal Unicode:

>>> unicode_literal = u''Километр'' >>> print unicode_literal.lower() километр

Tenga en cuenta que los bytes son completamente diferentes de los bytes str : el carácter de escape es ''/u'' seguido por el ancho de 2 bytes, o la representación de 16 bits de estas letras unicode :

>>> unicode_literal u''/u041a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'' >>> unicode_literal.lower() u''/u043a/u0438/u043b/u043e/u043c/u0435/u0442/u0440''

Ahora, si solo lo tenemos en forma de str , necesitamos convertirlo a unicode . El tipo Unicode de Python es un formato de codificación universal que tiene muchas advantages relación con la mayoría de las demás codificaciones. Podemos usar el constructor unicode o el método str.decode con el códec para convertir el str en unicode :

>>> unicode_from_string = unicode(string, ''utf-8'') # "encoding" unicode from string >>> print unicode_from_string.lower() километр >>> string_to_unicode = string.decode(''utf-8'') >>> print string_to_unicode.lower() километр >>> unicode_from_string == string_to_unicode == unicode_literal True

Ambos métodos se convierten al tipo Unicode, y lo mismo que unicode_literal.

Mejores Prácticas, use Unicode

Se recomienda que siempre trabaje con texto en Unicode .

El software solo debería funcionar con cadenas Unicode internamente, convirtiéndose a una codificación particular en la salida.

Puede codificar de nuevo cuando sea necesario

Sin embargo, para volver a escribir la minúscula en el tipo str , codifique la cadena python utf-8 nuevo a utf-8 :

>>> print string Километр >>> string ''/xd0/x9a/xd0/xb8/xd0/xbb/xd0/xbe/xd0/xbc/xd0/xb5/xd1/x82/xd1/x80'' >>> string.decode(''utf-8'') u''/u041a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'' >>> string.decode(''utf-8'').lower() u''/u043a/u0438/u043b/u043e/u043c/u0435/u0442/u0440'' >>> string.decode(''utf-8'').lower().encode(''utf-8'') ''/xd0/xba/xd0/xb8/xd0/xbb/xd0/xbe/xd0/xbc/xd0/xb5/xd1/x82/xd1/x80'' >>> print string.decode(''utf-8'').lower().encode(''utf-8'') километр

Así que en Python 2, Unicode puede codificar en cadenas de Python, y las cadenas de Python pueden decodificarse en el tipo Unicode.

¿Hay una manera de convertir una cadena de mayúsculas, o incluso de mayúsculas a minúsculas?

Ej. Kilómetros -> kilómetros.


Además, puedes sobrescribir algunas variables:

s = input(''UPPER CASE'') lower = s.lower()

Si lo usas así:

s = "Kilometer" print(s.lower()) - kilometer print(s) - Kilometer

Funcionará justo cuando se llama.


Con Python 2, esto no funciona para las palabras que no están en inglés en UTF-8. En este caso, la decode(''utf-8'') puede ayudar:

>>> s=''Километр'' >>> print s.lower() Километр >>> print s.decode(''utf-8'').lower() километр


No intentes esto, totalmente desaconsejable, no hagas esto:

import string s=''ABCD'' print(''''.join([string.ascii_lowercase[string.ascii_uppercase.index(i)] for i in s]))

Salida:

abcd

Como nadie lo escribió aún, puedes usar swapcase (así que las letras mayúsculas se convertirán en minúsculas, y viceversa) (y esta debes usarla en los casos en los que acabo de mencionar (convertir de arriba a abajo, de abajo a arriba)):

s=''ABCD'' print(s.swapcase())

Salida:

abcd


Puede hacer lo que Peter dijo , o si desea que el usuario ingrese algo, puede hacer el siguiente código:

raw_input(''Type Something'').lower()

Luego convertirá automáticamente la cadena que escribieron en minúsculas.

Nota: se cambió el nombre de raw_input a input en Python 3.xy superior.


s = "Kilometer" print(s.lower())

La documentación oficial es str.lower() .