2017-05-21 3 views
0
from string import capwords 

capwords('\"this is test\", please tell me.') 
# output: '\"this Is Test\", Please Tell Me.' 
      ^

なぜこれと等しくないのですか? ↓Pythonのパスワードについて

'\"This Is Test\", Please Tell Me.' 
^

どうすればいいですか?

+0

'STRING'モジュールは、Python 1から残っているとPython 2.0の文字列メソッドを導入したときに、ほぼ完全に廃止されました。あなたは ''文字列をインポートする必要はほとんどありません。 'maketrans()'(私が今使ってきたもの)とロケール依存の大文字/小文字のもの(これまで使ったことのないもの)の例外は2つしか考えられません。 – BoarGules

+0

ありがとうございます。 '.title()'を使うことで問題は解決しました。 – tanby

答えて

1

documentationは言う:

スプリットstr.split()を使用して単語に引数は、str.capitalize()を使用して、各単語を大文字にし、str.join()を使用して大文字の単語を結合します。オプションの第2引数sepが存在しないか、Noneの場合、空白文字の実行は1つのスペースで置き換えられ、先頭と末尾の空白は削除されます。そうでない場合は、sepが分割されて結合されます。

我々はステップでこのステップを実行する場合は、次の

>>> s = '\"this is test\", please tell me.' 
>>> split = s.split() 
>>> split 
['"this', 'is', 'test",', 'please', 'tell', 'me.'] 
>>> ' '.join(x.capitalize() for x in split) 
'"this Is Test", Please Tell Me.' 

ですから、二重引用符は単語の一部として扱われ、その次"t" Sが大文字にされていない見ることができます。

文字列のstr.title()方法は、あなたが使うべきものです。

>>> s.title() 
'"This Is Test", Please Tell Me.' 
+0

私はちょうど同じものを投稿しようとしていた: - D –

4

先が"で混乱しているので動作しません。"Thisは手紙で始まらないと思います。

代わりに組み込みの文字列メソッド.title()を使用してください。

>>> '\"this is test\", please tell me.'.title() 
'"This Is Test", Please Tell Me.' 

これはおそらくcapwords()stringモジュール内に残っているが、文字列の方法を作ったことはなかった理由です。 string.capwords()ため

+0

[string.capwords](https://docs.python.org/release/2.1/lib/module-string.html)は2.x以降、永遠に組み込まれています。ほとんど使われません。 – smci

関連する問題