2014-05-16 4 views
1

내가 문자열이 있습니다목록의 첫 번째 항목을 제외하고 - 파이썬

n = 'my fancy extension' 

내가 MyFancyExtension 얻을

''.join([ x.capitalize() for x in n.split() ]) 

과를,하지만 난 myFancyExtension이 필요합니다.

목록의 첫 번째 항목의 대문자 사용을 피하거나 한 단어 만 지정하면 대문자로 변환하지 않으려면 어떻게해야합니까?

답변

1
>>> n = 'my fancy extension' 
>>> array = n.split() 
>>> array[0] + ''.join(map(str.capitalize, array[1:])) 
'myFancyExtension' 
+0

n = "onewordwithnospace" – Pavel

+1

그것은 한 단어도 작동합니다. – branquito

+0

@meshy 매우 우아한 솔루션! 그래서, 파이썬에는 아무것도 없다. 그래서 나는 '' '.join ([x in l --if x not first elmnt -])'이라고 말할 수있다.'-'사이의 일부는 인덱스 테스트이다. ? – branquito

1
l = n.split() 
if len(l)>1: 
    print l[0] + ''.join([ x.capitalize() for x in l[1:] ]) 
else: 
    print l[0] 

또는

import re 
print re.sub(" ([a-z])", lambda s: s.group(1).upper(), n) 
+0

이렇게하는 것이 더 관용적 인 방법 일 수 있습니까? 어쨌든 빠른 답변 주셔서 감사합니다. – branquito

+0

idoyomatic – Pavel

+1

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html – branquito

2

파이썬 3에서 당신은 할 수 있습니다 : 당신이 추가 단계가 필요할 것 때문에

n = 'my fancy extension' 

first,*rest = n.split() 

''.join([first] + [x.capitalize() for x in rest]) 
Out[10]: 'myFancyExtension' 

파이썬 2, 멋진 extended tuple unpacking 구문이없는 (오 아니요!) :

spl = n.split() 

first,rest = spl[0],spl[1:] 
+0

우아한 것도 정의 해주세요. python2와 함께 사용하면 좋지 않습니다. 고마워요 :) – branquito

2

하지 조밀 한 라이너의 팬 :하지만,

>>> words = "my fancy extension" 
>>> ''.join([x.capitalize() if i else x for (i, x) in enumerate(words.split())]) 
'myFancyExtension' 
그래서
+0

'if i> 0'을 'if i'로 바꾸면 조금 짧아 질 수 있습니다.';;)' – meshy

+0

Oh, duh. 물론 :) – bgporter

2

, 리터에서 x의 내가 .join ''말할 수 파이썬에서 아무것도 ([ x.capitalize()이 없다 --if x not first elmnt--]), 사이에 - 일부 색인 테스트가 있습니까? '

>>> def camel(my_string): 
...  my_list = my_string.split() 
...  return ''.join([x.lower() if x is my_list[0] else x.capitalize() for x in my_list]) 
>>> camel("lovely to be here") 
'lovelyToBeHere' 

: 예를 들어

x.capitalize() if Condition else x.lower() 

,이 경우,

x if Condition else y 

또는 :

사실 당신은 이러한 효과를 얻기 위해 파이썬의 원을 사용할 수 있습니다 x '는 문자열 조각이고'condition '은 if x is my_list[0]이고 두 옵션은 물론 x.lower()x.capitalize()입니다.

또한 가지 좋은 당신이 당신을 위해 그것을 소문자 것입니다 :)이 if Condition x else y 순서로 쓰여진 대부분의 언어에서

>>> camel("WHat is the problem") 
'whatIsTheProblem' 
>>> 

, 대신 그래서 파이썬 사람들이 많이 수줍어 x if Condition else y의 첫 번째 부분을 노는 때문에 경우 개인적으로 파이썬의 삼자가 멋지다고 생각합니다.

+0

멋지게 설명해 드리겠습니다. 앞으로의 작업을 염두에 두겠습니다. ;) – branquito

관련 문제