python - 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
解决方案
当然!正则表达式的东西一开始可能很难看和理解。首先,让我们把它分解成事情发生的顺序。让我们使用示例输入"test_of wORd editor"
首先,我们将字符串拆分为一个带有split('([^a-zA-Z0-9])', string)
. 这是在不是字母(大写或小写)或数字的每个字符上拆分的。这会将我们的输入转换为['test', '_', 'of', ' ', 'wORd', ' ', 'editor']
.
接下来,我们将通过询问列表中的每个元素是否是字母数字来仅保留列表的一部分.isalnum()
。如果不是,我们将忽略列表中的那一部分。如果它是字母数字,我们调用.capitalize()
列表中的每个元素,这会将元素转换为所有小写字母,但第一个字符除外,它是大写字母。这是一个内置的 python 函数,可以做你想做的事情。这两个部分一起使用列表理解完成。我假设你知道那是什么。这将是['Test', 'Of', 'Word', 'Editor']
.
最后,我们需要将列表连接在一起再次成为一个字符串。''.join()
将列表中的每个元素组合在一起,没有空格,返回'TestOfWordEditor'
.
推荐阅读
- sql - Postreg SQL 使用逗号分隔的引号获取所有值
- python - Plotly 组合条形图和由范围滑块控制的表格
- visual-studio-code - Visual Studio 的 Jupyter 笔记本扩展需要更长的时间来加载并且 bin 有一些未知文件
- c# - 每个程序集或命名空间或项目的 Asp.Net Core GetRoutes
- python - 在 Tkinter 中制作标签填充整个单元格
- google-cloud-platform - 使用嵌套资源的 gcloud 过滤器
- android - 广播接收器未打开内部活动
- azure - Azure B2C - MSAL - 获取带有更新声明的 ID 令牌
- javascript - React - 存储从服务器收到的令牌
- laravel - Laravel MongoDB 未设置使用?