1. ホーム
  2. python

[解決済み] 例外を含む文字列のタイトルケーシング

2023-03-23 03:13:45

質問

Python で文字列を大文字にする標準的な方法はありますか (すなわち、単語は大文字で始まり、残りの文字はすべて小文字になります)。 and , in そして of を小文字にしたのですか?

どのように解決するのですか?

これにはいくつかの問題があります。split と join を使用すると、いくつかの空白文字が無視されます。組み込みのcapitalizeとtitleメソッドは空白文字を無視しない。

>>> 'There     is a way'.title()
'There     Is A Way'

文章が記事で始まる場合、タイトルの最初の単語を小文字にするのはNGです。

これらを意識して

import re 
def title_except(s, exceptions):
    word_list = re.split(' ', s)       # re.split behaves as expected
    final = [word_list[0].capitalize()]
    for word in word_list[1:]:
        final.append(word if word in exceptions else word.capitalize())
    return " ".join(final)

articles = ['a', 'an', 'of', 'the', 'is']
print title_except('there is a    way', articles)
# There is a    Way
print title_except('a whim   of an elephant', articles)
# A Whim   of an Elephant