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?python capitalizar la primera letra solo
este
1bob
5sandy
a este
1Bob
5Sandy
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?python capitalizar la primera letra solo
este
1bob
5sandy
a este
1Bob
5Sandy
Si el primer carácter es un número entero, no será mayúscula la primera letra.
>>> '2s'.capitalize()
'2s'
Si desea que la funcionalidad, quitarse los dígitos, se puede utilizar para comprobar '2'.isdigit()
para cada carácter.
>>> s = '123sa'
>>> for i, c in enumerate(s):
... if not c.isdigit():
... break
...
>>> s[:i] + s[i:].capitalize()
'123Sa'
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
no funcionan si no hay alfa –
Sólo 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 alfabeto c personaje. Pero luego .capitalize()
tiene el mismo problema, al menos en ese 'joe Bob'.capitalize() == 'Joe bob'
, entonces meh.
Aquí es decir una línea que va a mayúsculas la primera letra y dejar 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á lugar a WordsWithOtherUppercaseLetters
Esto es similar a @ respuesta de Anon en ese mantiene intacto el resto de la caja de la cuerda, sin la necesidad del módulo re.
def upperfirst(x):
return x[0].upper() + x[1:]
x = 'thisIsCamelCase'
y = upperfirst(x)
print(y)
# Result: 'ThisIsCamelCase' #
Como @Xan señaló, la función podría utilizar más la comprobación de errores (como la comprobación de que x es una secuencia - sin embargo yo estoy omitiendo casos extremos para ilustrar la técnica)
Muy útil, pero necesita una 'len (x) == 0' rama. – Xan
desde python 2.5 la caja vacía todavía puede manejarse en una línea: 'return x [0] .upper() + x [1:] si len (x)> 0 else x' – danio
Respuesta muy útil, porque' capitalize '&' title' primero minúscula toda la cadena y luego mayúscula solo la primera letra. –
Puede reemplazar el primera letra (preceded by a digit
) de cada palabra usando expresiones regulares:
re.sub(r'(\d\w)', lambda w: w.group().upper(), '1bob 5sandy')
output:
1Bob 5Sandy
como ver here respondida por Chen Houwu, es posible utilizar el paquete de cadena:
import string
string.capwords("they're bill's friends from the UK")
>>>"They're Bill's Friends From The Uk"
una sola línea: ' '.join(token_text[:1].upper() + token_text[1:] for sub in text.split(' '))
Me pregunto cómo capitalizar el primer carácter alfabético – user1442957
y eso es lo que hace esta respuesta, más o menos – njzk2
yo usaría si c.isalpha() en lugar de, si no c. isdigit() – njzk2