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('' ''))