除了列表中的第一项 - python

时间:2014-05-16 23:50:26

标签: python list

我有字符串:

n = 'my fancy extension'

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

我得到MyFancyExtension,但我需要myFancyExtension

如果只列出一个单词,如何避免大写列表中的第一项,或者根本没有大写?

6 个答案:

答案 0 :(得分:2)

在python 3中,你可以这样做:

n = 'my fancy extension'

first,*rest = n.split()

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

python 2没有花哨的extended tuple unpacking语法,所以你需要一个额外的步骤(哦不!):

spl = n.split()

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

不喜欢密集的单行,但是:

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

答案 3 :(得分:2)

  

所以,python中没有任何东西,所以我可以说'。#。   x.capitalize()for x in l --if x not first elmnt--]),part between -   是一些指数测试?

实际上你可以使用Python的三元组来实现这样的效果:

x if Condition else y

或者,在这种情况下,

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

例如:

>>> 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'是一个字符串,'条件'是if x is my_list[0],这两个选项当然是x.lower()x.capitalize()

也很好,因为如果你搞砸了第一部分它会为你小写它:)

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

在大多数语言中,它都是if Condition x else y命令,而不是x if Condition else y,所以很多Python人都不喜欢它,但我个人认为Python的三元版很酷

答案 4 :(得分: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)

答案 5 :(得分:1)

n = 'my fancy extension'

n = n.title()
n = n.replace(" ", "")
n = n[0].lower() + n[1:]

print(n)