如何将 CamelCase 拆分为列表 (python)
How to split CamelCase into a list (python)
我已经尝试了一个月,但无法取得任何进展。我很快就要考试了,但我想不通。我需要一种方法将 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)
可以拆分驼峰式但不能完成数组部分
使用正则表达式可以完成大部分工作:
In [10]: import re
In [11]: re.sub('([a-z])([A-Z])', r' ', 'ThisIsCamelCase').split()
Out[11]: ['This', 'Is', 'Camel', 'Case']
将列表设为 10 项:
In [23]: a = re.sub('([a-z])([A-Z])', r' ', 'ThisIsCamelCase').split()
In [24]: a + [None]*(10 - len(a))
Out[24]: ['This', 'Is', 'Camel', 'Case', None,
None, None, None, None, None]
(顺便说一下,这似乎是一件非 Pythonic 的事情)。
如果您必须使用(Empty)
而不是None
这样的合理值:
In [26]: a + ['(Empty)']*(10 - len(a))
Out[26]:
['This', 'Is', 'Camel', 'Case', '(Empty)',
'(Empty)', '(Empty)', '(Empty)', '(Empty)', '(Empty)']
我已经尝试了一个月,但无法取得任何进展。我很快就要考试了,但我想不通。我需要一种方法将 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)
可以拆分驼峰式但不能完成数组部分
使用正则表达式可以完成大部分工作:
In [10]: import re
In [11]: re.sub('([a-z])([A-Z])', r' ', 'ThisIsCamelCase').split()
Out[11]: ['This', 'Is', 'Camel', 'Case']
将列表设为 10 项:
In [23]: a = re.sub('([a-z])([A-Z])', r' ', 'ThisIsCamelCase').split()
In [24]: a + [None]*(10 - len(a))
Out[24]: ['This', 'Is', 'Camel', 'Case', None,
None, None, None, None, None]
(顺便说一下,这似乎是一件非 Pythonic 的事情)。
如果您必须使用(Empty)
而不是None
这样的合理值:
In [26]: a + ['(Empty)']*(10 - len(a))
Out[26]:
['This', 'Is', 'Camel', 'Case', '(Empty)',
'(Empty)', '(Empty)', '(Empty)', '(Empty)', '(Empty)']