¿Hay un método de cadena para capitalizar siglas en python?
-
20-08-2019 - |
Pregunta
Esto es bueno:
cadena de importación string.capwords (" nombre propio ") 'Nombre propio'
Esto no es tan bueno:
string.capwords (" I.R.S ") 'I.r.s'
¿No hay un método de cadena para hacer capwords para que se adapte a las siglas?
Solución
Esto podría funcionar:
import re
def _callback(match):
""" This is a simple callback function for the regular expression which is
in charge of doing the actual capitalization. It is designed to only
capitalize words which aren't fully uppercased (like acronyms).
"""
word = match.group(0)
if word == word.upper():
return word
else:
return word.capitalize()
def capwords(data):
""" This function converts `data` into a capitalized version of itself. This
function accomidates acronyms.
"""
return re.sub("[\w\'\-\_]+", _callback, data)
Aquí hay una prueba:
print capwords("This is an IRS test.") # Produces: "This Is An IRS Test."
print capwords("This is an I.R.S. test.") # Produces: "This Is An I.R.S. Test."
Otros consejos
No, no existe tal método en la biblioteca estándar.
Incluso si existiera dicha función, ¿qué haría cuando se le pida que procese " IRS " ;? Incluso el IRS se hace llamar & Quot; IRS & Quot; sin puntos.
Acabo de utilizar una lista de comprensión: [". " .join ([string.capwords (l) para l en entry.split (". " )]) para ingresar en original_list]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow