1

これはいい:

import string
string.capwords("proper name")

Out: 'Proper Name'

これはあまり良くありません:

string.capwords("I.R.S")

Out: 'I.r.s'

頭字語に対応するようにキャップワードを実行する文字列メソッドはありませんか?

4

4 に答える 4

8

これはうまくいくかもしれません:

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."
于 2009-01-26T08:08:40.417 に答える
2

いいえ、標準ライブラリにはそのようなメソッドはありません。

于 2009-01-26T07:36:00.857 に答える
1

そのような機能があったとしても、「IRS」の処理を依頼されたらどうするのでしょうか? IRS でさえ、自分たちをドットなしで「IRS」と呼んでいます。

于 2009-01-26T07:37:13.943 に答える
-1

リスト内包表記を使用しました: [ ".".join( [ string.capwords(l) for l in entry.split(".") ] ) for entry in original_list ]

于 2009-01-26T08:38:23.477 に答える