2010-12-04 3 views
12

Pythonでは、指定された文字列の頭字語をどうやって作るのですか?Pythonで頭字語を作成する

と同様に、入力文字列:

'First Second Third' 

出力:

'FST' 

私が何かしようとしています:

>>> for e in x: 
     print e[0] 

をしかし、それは動作していない...どのように上の任意の提案これはできますか?私はこれを行う適切な方法があると確信していますが、私はそれを把握していないようです。 reを使用する必要がありますか?

答えて

11

する

print "".join(e[0] for e in x.split()) 
を試してみてくださいあなたのループは、実際に文字列 x内のすべての文字を超えるループします。単語をループする場合は、 x.split()を使用できます。 reなし

+0

「分割」ここでは、元に欠けていた該当ビットであること。 –

+2

ちょうど2秒の違いですので、+1してください! – user225312

+0

ありがとう、私はこれを使用すると思ったが、何とか私は自分の解決策に固執していた。 – user225312

5

>>> names = 'Vincent Vega Jules Winnfield' 
>>> ''.join(x[0] for x in names.split()) 
'VVJW' 
+0

Svenと同じです... – user225312

2
s = 'First Second Third' 
x = s.split(' ') 
for e in x: 
    print e[0] 

は、トリックを行う必要があります。

2

また、あなたは、非単語の文字の上に線/テキストを分割する

re.split('\W')

を使用することができます。これは少し頑強かもしれません。少し別の何かのために今

3

...

words = "There ain't no such thing as a free lunch." 
acronym = ''.join(word[0] for word in words.upper().split()) 
print acronym 
# TANSTAAFL 

TANSTAAFLはところで、かなりよく知るものです)。

13

あなただけ

>>>line = ' What AboutMe ' 
>>>filter(str.isupper, line) 
'WAM' 

何大手キャップではないかもしれない言葉についての大文字を使用したい場合。

>>>line = ' What is Up ' 
>>>''.join(w[0].upper() for w in line.split()) 
'WIU' 

Capsワードについてはどうでしょうか。あなたは、物事に(ロケールにかかわらず)文法的に正しいやり方をしたい場合は

>>>line = ' GNU is Not Unix ' 
>>>''.join(w[0] for w in line.split() if w[0].isupper()) 
'GNU' 
+1

'' .join(line.split()内のwのためのw [0] .upper())は '' .join(line.split()のwは0) .upper() – kevpie

+1

複数の関連するタスクを実行する方法を示すUpvote。 – kindall

2

、その後filter()title()使用:

acronym = filter(str.isupper, my_string.title()) 

title()はかなり素晴らしいです。それは文字列のタイトルを作成し、ロケールに応じて正しいです。ここで

0

があるとして数字を残して、正規表現と頭字語を行う方法は次のとおりです。

import re 
words = "internet explorer 10" 
print re.sub(r"([a-zA-Z])[a-z,A-Z]+\s*",r"\1",words).upper() 

IE10

関連する問題