5

このtitle()方法はうまく機能しますが、単語と数字の両方で始まる文字列があり、文字列内の数字で始まらない単語のみをタイトルケースにしたいという状況があります。

数字の数は可変である可能性があり、常に数字があるとは限りません。それぞれの事例をご紹介します。

"this is sparta".title() # This Is Sparta

"3rd sparta this is".title() # 3Rd Sparta This Is

"4545numbers start here".title() # "4545Numbers Start Here

代わりに、これらをすべて次のように変更したいと思います。

"This Is Sparta"

"3rd Sparta This Is"

"4545numbers Start Here"

インポートを許可しないプログラムを使用しており、これを 1 行で行う必要があります。私が使用できる唯一のライブラリはre.

私の好みは、可能であればこれを行うためにリスト内包表記を使用することです。

4

5 に答える 5

4

簡単なリスト内包表記は次のとおりです。

' '.join([word.capitalize() for word in your_string.split(' ')])

句読点やその他の空白で分割したい場合は、おそらく何らかのre関数を使用する必要があります。

于 2015-08-28T22:37:19.667 に答える
1

これは別のオプションかもしれません:

  s = "3rd sparta this is"
  " ".join([si.title() if not (str.isdigit(si[0])) else si for si in s.split()])
于 2015-08-28T22:37:21.493 に答える
0

最初の文字を大文字に設定するだけです

string = string.split (' ')
for x in range (len(string)):
    try:
        string[x] = string[x][0].uppercase() + string [x][1:]
    except ValueError:
        pass
temp = ''
for word in string:
    temp += word + ' '
string = temp
string.title()
于 2015-08-28T22:38:49.347 に答える