首页 > 解决方案 > Python:将字符串从任何格式转换为 CamelCase

问题描述

请向我解释以下 Python 代码。这个答案在 CodeWars 上提交时有效,我希望帮助理解它的来龙去脉。这个程序的每个步骤发生了什么?

from re import split

def camelize(string):
    return ''.join(a.capitalize() for a in split('([^a-zA-Z0-9])', string)
       if a.isalnum())

这是一个测试示例:
camelize("example name") # => ExampleName

标签: pythonregexcamelcasing

解决方案


当然!正则表达式的东西一开始可能很难看和理解。首先,让我们把它分解成事情发生的顺序。让我们使用示例输入"test_of wORd editor"

首先,我们将字符串拆分为一个带有split('([^a-zA-Z0-9])', string). 这是在不是字母(大写或小写)或数字的每个字符上拆分的。这会将我们的输入转换为['test', '_', 'of', ' ', 'wORd', ' ', 'editor'].

接下来,我们将通过询问列表中的每个元素是否是字母数字来仅保留列表的一部分.isalnum()。如果不是,我们将忽略列表中的那一部分。如果它是字母数字,我们调用.capitalize()列表中的每个元素,这会将元素转换为所有小写字母,但第一个字符除外,它是大写字母。这是一个内置的 python 函数,可以做你想做的事情。这两个部分一起使用列表理解完成。我假设你知道那是什么。这将是['Test', 'Of', 'Word', 'Editor'].

最后,我们需要将列表连接在一起再次成为一个字符串。''.join()将列表中的每个元素组合在一起,没有空格,返回'TestOfWordEditor'.


推荐阅读