s = ['my', 'name']
Quiero cambiar la primera letra de cada elemento en mayúscula.cómo cambiar la caja de la primera letra de una cadena?
s = ['My', 'Name']
s = ['my', 'name']
Quiero cambiar la primera letra de cada elemento en mayúscula.cómo cambiar la caja de la primera letra de una cadena?
s = ['My', 'Name']
Se puede utilizar el método de capitalize():
s = ['my', 'name']
s = [item.capitalize() for item in s]
print s # print(s) in Python 3
Esto imprimirá:
['My', 'Name']
Puede utilizar 'my'.title()
que devolverá 'My'
.
para superar la lista completa de asignar más de esta manera:
>>> map(lambda x: x.title(), s)
['My', 'Name']
En realidad, .title()
hace que todas las palabras comienzan con mayúscula. Si desea limitar estrictamente la primera letra, use capitalize()
en su lugar. (Esto hace una diferencia por ejemplo en 'esta palabra' siendo cambiadas para bien o This Word
This word
)
y también la diferencia entre Frank's y Frank'S, como se indica aquí http://op.to/How.To.Capitalize.First.Letter+ –
Además, 'str.title' es una forma más fácil de especificar' lambda x: x.title() '. – trss
Usted puede utilizar
for i in range(len(s)):
s[i]=s[i].capitalize()
print s
No necesita 'temp', no hace nada y es lo mismo que' list [i] = list [i] .capitalize() '- que solo funcionaría si la lista de OP nombrada' s 'se renombró' list', pero sería una mala práctica porque al hacerlo se ocultaría la función/tipo incorporado del mismo nombre. No estoy seguro de por qué la coma final en la declaración de impresión se puso allí ... – martineau
fue un error de tipo error al poner la coma allí. – Kracekumar
Probablemente no importa, pero es posible que desee utilizar este lugar de la capitalize()
o title()
métodos de cadena, ya que, además de uppercasing la primera letra, también en minúsculas el resto de la cadena (y esto no lo hace):
s = map(lambda e: e[:1].upper() + e[1:] if e else '', s)
+1: buena captura; sin embargo, ¿por qué la expresión 'if s else '''? Para evitar una concatenación de cadenas vacías? Creo que es una optimización prematura. – tzot
@ ΤΖΩΤΖΙΟΥ: Gracias. Esa parte está allí principalmente porque acabo de ajustar mi respuesta a una [pregunta] similar (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- python/3847369 # 3847369). Prefiero pensar que es una programación defensiva, ya que puede manejar un elemento de lista que sea 'Ninguno' (entonces, no, no está allí porque le preocupa que el caso de cadena vacía sea menos que óptimo). – martineau
Creo que manejar 'None' como esta es una mala práctica. Preferiría tener una excepción planteada en este caso que haber pasado silenciosamente la cadena en blanco (posiblemente incorrecta). – dbkaplun
Tanto .capitalize() y .title(), cambia el othe r letras en la cadena para minúsculas.
Aquí hay una función simple que solo cambia la primera letra a mayúscula y deja el resto sin cambios.
def upcase_first_letter(s):
return s[0].upper() + s[1:]
+1 ¡gracias por sugerir funciones incorporadas! –
Esto no cambia la primera letra de _each element_ en la lista que se muestra en la pregunta del OP. – martineau
Aunque LC, '[i [0] .upper() + i [1:] para i en s]' –
capitalize no hace lo que OP pregunta. mayúscula también hará que los primeros caracteres no sean primeras letras – lurscher
, sí, esta respuesta es engañosa: '' naMe'.capitalize() == 'Name'' – Milimetric