2010-12-04 2 views
12

파이썬에서 주어진 문자열의 머리 글자 어를 어떻게 만듭니 까?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()을 사용할 수 있습니다.

+0

에게 여기에 원래에서 누락 된 관련 비트 인 '분할'. –

+2

그냥 2 초의 차이가 있으므로 +1하겠습니다! – user225312

+0

고마워, 나는 이것을 사용하는 것을 생각했지만 어떻게 든 나는 내 자신의 해결책을 고수하고 있었다. – user225312

5

re없이 :

>>> 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은 BTW, 상당히 잘 알고 하나입니다).

13

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

무엇 캡을 선도 할 수 없습니다 단어에 대해 대문자를 사용합니다.

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

대문자 단어는 어떨까요? 당신이 일을 (로켈 여부에 관계없이) 문법적으로 올바른 방법을 수행 할 경우

>>>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

관련 문제