【问题标题】:How to split CamelCase into a list (python) [duplicate]如何将 CamelCase 拆分为列表(python)[重复]
【发布时间】:2017-05-10 12:54:44
【问题描述】:

我已经尝试了一个月,但无法做到这一点。我很快就要考试了,但我想不通。我需要一种将 CamelCase 语句拆分为 python 列表的方法,并且该列表应该有 10 个单词的空间。如果语句中的单词少于 10 个,则列表中的空白点应为 (Empty)。

[编辑] 输入将类似于 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天都没有得到解决的时候会感到沮丧,所以他们寻求帮助! ^_^ 你怎么能尝试一个月?无论如何,您可以发布输入及其预期的输出 plzz ;)
  • 这可能有助于向我们展示一些您迄今为止尝试过的代码。
  • @PriyeshKumar 是的,我刚刚编辑了问题
  • @KarolineBrynildsen 检查编辑

标签: list python-3.x camelcasing


【解决方案1】:

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

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)']

【讨论】:

  • 老兄,你是救生员。至于(空)的事情,基本上是考试委员会指定给我们的,我们在这件事上没有发言权。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
相关资源
最近更新 更多