Есть ли строковый метод для прописных сокращений в Python? - PullRequest
0 голосов
/ 26 января 2009

Это хорошо:

строка импорта string.capwords («собственное имя») «Собственное имя»

Это не так хорошо:

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

Нет ли строкового метода для написания заглавных слов, чтобы он соответствовал акронимам?

Ответы [ 4 ]

5 голосов
/ 26 января 2009

Это может сработать:

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)

Вот тест:

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 голосов
/ 26 января 2009

Нет, такого метода нет в стандартной библиотеке.

1 голос
/ 26 января 2009

Даже если бы была такая функция, что бы она делала, когда ее попросили обработать «IRS»? Даже IRS называют себя «IRS» без точек.

0 голосов
/ 26 января 2009

Я просто использовал понимание списка: [".". Join ([string.capwords (l) для l в entry.split (".")]) Для записи в original_list]

...