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



我已经尝试了一个月,但一无所获。我很快就要考试了,但我无法弄清楚。我需要一种方法在 python 中将 CamelCase 语句拆分为一个列表,并且该列表应该有 10 个单词的空间。如果语句中的单词少于 10 个,则列表中的空白处应显示为 (Empty(。

[编辑]输入将是类似于 这是骆驼案例预期的输出将是一个数组,其内容为这是骆驼箱(空((空(

到目前为止,我已经能够将其放在一起:

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)它可以拆分骆驼壳,但不能完成阵列部分

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

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]

(顺便说一下,这似乎是一件非 Python 的事情(。

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

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

最新更新