2

次の手順があります。

def capitalize(self, text):
    t = ' '.join([ ''.join([w[0].upper()]+[w[1:]]) for w in text.split()])
    if text and text[-1] == ' ':
        t = ''.join([t] + [' '])
    return t

文字列textを取ります。すべきこと:

  • スペースの後に続く各文字列グループ (単語) の最初の文字を大文字にし、テキストの末尾にスペースがあればそれを保持します。

元:

'home swe eeeet home' -> 'Home Swe Eeeet Home'
'heLLo OoO ooo '      -> 'HeLLo OoO Ooo ' (space preserved in the end)

質問:

限られた完全に非専門家レベルの Python を使用して、この手順をメモリ効率が高く、できるだけ高速に作成しようとしました。

  • この場合、物事をリストに変換して結合し、新しい文字列を作成し続けないようにするアプローチは効率的ですか?

  • これを達成するためのより良い、よりpythonicな方法はありますか?

さらに:

このプロシージャは、GUI アプリケーションのテキスト フィールドでキーが押されるたびに呼び出されます。

4

2 に答える 2

0
def title(s):
    return(' '.join(x.capitalize() for x in s.split(' ')))

# Or alternatively:
#y = []
#for x in s.split(' '): 
#    y.append(x.capitalize())
#return ' '.join(y)
于 2013-08-31T13:49:37.593 に答える