upper python capitalize letter

python - upper - string capitalize javascript



Pitón capitaliza la primera letra solamente (8)

Soy consciente de que .capitalize () escribe en mayúscula la primera letra de una cadena, pero ¿y si el primer carácter es un número entero?

esta

1bob 5sandy

a esto

1Bob 5Sandy


Aquí hay una sola línea que mayúscula la primera letra y deja el caso de todas las letras siguientes:

import re key = ''wordsWithOtherUppercaseLetters'' key = re.sub(''([a-zA-Z])'', lambda x: x.groups()[0].upper(), key, 1) print key

Esto dará como resultado WordsWithOtherUppercaseLetters


Como vemos here respondido por Chen Houwu, es posible usar el paquete de cadenas:

import string string.capwords("they''re bill''s friends from the UK") >>>"They''re Bill''s Friends From The Uk"


Esto es similar a la respuesta de @Anon ya que mantiene intacto el resto de la cadena, sin la necesidad del módulo re.

def sliceindex(x): i = 0 for c in x: if c.isalpha(): i = i + 1 return i i = i + 1 def upperfirst(x): i = sliceindex(x) return x[:i].upper() + x[i:] x = ''0thisIsCamelCase'' y = upperfirst(x) print(y) # 0ThisIsCamelCase

Como señaló @Xan, la función podría usar más verificación de errores (como verificar que x sea una secuencia, sin embargo, estoy omitiendo casos de bordes para ilustrar la técnica)

Actualizado por comentario de @normanius (¡gracias!)

¡Gracias a @GeoStoneMarten al señalar que no respondí la pregunta! -fixed eso


Puede reemplazar la primera letra ( preceded by a digit ) de cada palabra usando regex:

re.sub(r''(/d/w)'', lambda w: w.group().upper(), ''1bob 5sandy'') output: 1Bob 5Sandy


Se me ocurrió esto:

import re regex = re.compile("[A-Za-z]") # find a alpha str = "1st str" s = regex.search(str).group() # find the first alpha str = str.replace(s, s.upper(), 1) # replace only 1 instance print str


Si el primer carácter es un número entero, no escribirá en mayúscula la primera letra.

>>> ''2s''.capitalize() ''2s''

Si quieres la funcionalidad, quita los dígitos, puedes usar ''2''.isdigit() para verificar cada carácter.

>>> s = ''123sa'' >>> for i, c in enumerate(s): ... if not c.isdigit(): ... break ... >>> s[:i] + s[i:].capitalize() ''123Sa''


Solo porque nadie más lo ha mencionado:

>>> ''bob''.title() ''Bob'' >>> ''sandy''.title() ''Sandy'' >>> ''1bob''.title() ''1Bob'' >>> ''1sandy''.title() ''1Sandy''

Sin embargo, esto también daría

>>> ''1bob sandy''.title() ''1Bob Sandy'' >>> ''1JoeBob''.title() ''1Joebob''

es decir, no solo capitaliza el primer carácter alfabético. Pero luego .capitalize() tiene el mismo problema, al menos en ese ''joe Bob''.capitalize() == ''Joe bob'' , entonces meh.


un '' ''.join(token_text[:1].upper() + token_text[1:] for sub in text.split('' '')) : '' ''.join(token_text[:1].upper() + token_text[1:] for sub in text.split('' ''))