2009-01-26 4 views
0

Ce qui est bon:Y at-il une méthode de chaîne pour capitaliser les acronymes en python?

import string string.capwords ("nom propre") 'Nom propre'

Ce n'est pas si bon:

string.capwords ("I.R.S") 'I.r.s'

est-il pas de méthode de chaîne pour faire capwords afin qu'il accueille les acronymes?

+0

IRS est une abréviation, pas un acronyme. Les acronymes sont (généralement) prononçables; et traditionnellement écrit sans ponctuation. –

+0

Je crois que vous voulez dire l'initialisme, monsieur. Les abréviations sont des choses comme ne pas, ne peuvent pas, ne le feront pas. Les acronymes sont des choses comme VISA. Les initialismes sont des choses que vous ne pouvez pas prononcer. Mais nous nous éloignons. – mlissner

Répondre

5

Cela pourrait fonctionner:

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) 

Voici un test:

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." 
2

Non, cette méthode n'existe pas dans la bibliothèque standard.

1

Même s'il y avait une telle fonction, que ferait-on lorsqu'on lui demandait de traiter "IRS"? Même les IRS s'appellent eux-mêmes "IRS" sans points.

+0

Mais pour mes fins, l'utilisation de points/points est une façon de dire que je veux que chacune des lettres soit en majuscule. – jamtoday

-1

Je viens d'utiliser une compréhension de la liste: "". [Join ([string.capwords (l) pour l in entry.split (".")]) pour l'entrée dans la liste originale]

Questions connexes