如何将CamelCase拆分为一个列表(python)

时间:2017-05-10 12:54:45

标签: list python-3.x camelcasing

我已经尝试了一个月,但却无法随心所欲。我很快就参加了考试,但我无法弄明白。我需要一种方法将CamelCase语句拆分为python中的列表,列表应该有10个单词的空间。如果语句中少于10个单词,则列表中的空白点应该说(空)。

[编辑] 输入将类似于ThisIsCamelCase 并且预期的输出将是其内容的数组 这个 是 骆驼 案件 (空) (空)

到目前为止,我已经把它放在一起了:

def un_camel(input): output = [input[0].lower()] for c in input[1:]: if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'): output.append(' ') output.append(c.lower()) else: output.append(c) return str.join('', output) 它可以拆分驼峰案例,但不能完成数组部分

1 个答案:

答案 0 :(得分:3)

使用正则表达式可以完成大部分工作:

In [10]: import re

In [11]: re.sub('([a-z])([A-Z])', r'\1 \2', 'ThisIsCamelCase').split()
Out[11]: ['This', 'Is', 'Camel', 'Case']

将列表设为10个项目:

In [23]: a = re.sub('([a-z])([A-Z])', r'\1 \2', 'ThisIsCamelCase').split()

In [24]: a + [None]*(10 - len(a))
Out[24]: ['This', 'Is', 'Camel', 'Case', None,
           None, None, None, None, None]

(顺便说一下,这似乎是一种非战斗性的事情)。

如果您必须使用(Empty)而不是None这样的合理值:

In [26]: a + ['(Empty)']*(10 - len(a))
Out[26]: 
['This', 'Is', 'Camel', 'Case', '(Empty)',
 '(Empty)', '(Empty)', '(Empty)', '(Empty)', '(Empty)']