Python:将字符串从任何格式转换为 CamelCase
Python: convert a string from any format into 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") # => 示例名称
函数的输入是字符串。
isalnum()
:方法isalnum()
检查字符串是否由字母数字字符组成。
.join()
: Python String join() ,join() 是一个字符串方法,它 returns 一个字符串与 iterable
的元素连接
capitalize()
:它return是字符串的副本,只有第一个字符大写。
split()
:方法 split() return 是字符串中所有单词的列表。
以上理解将 return 给定输入字符串的输出
好的!正则表达式的东西一开始很难看和理解。首先,让我们将其分解为事情发生的顺序。让我们使用示例输入 "test_of wORd editor"
首先,我们用split('([^a-zA-Z0-9])', string)
将字符串分割成一个列表。这会根据 不是 字母(大写或小写)或数字的每个字符拆分。这会将我们的输入转换为 ['test', '_', 'of', ' ', 'wORd', ' ', 'editor']
.
接下来,我们将通过询问列表中的每个元素是否都是带有 .isalnum()
的字母数字来仅保留列表的一部分。如果不是,我们将忽略列表中的那部分。如果它是字母数字,我们对列表中的每个元素调用 .capitalize()
,这会将元素转换为除第一个字符以外的所有小写字母,它是大写字母。这是一个内置的 python 函数,它正在执行您想要的内容。这两部分一起使用 list comprehension 完成。我假设你知道那是什么。此输出将是 ['Test', 'Of', 'Word', 'Editor']
.
最后,我们需要将列表连接在一起再次成为一个字符串。 ''.join()
将列表中的每个元素无空格组合在一起,返回 'TestOfWordEditor'
.
camelize 函数将接收字符串 string
并将其拆分为连续的字母数字字符的字符串
split('([^a-zA-Z0-9])', "example name") # => ['example', ' ', 'name']
拆分结果的每个字符串都会大写
[a.capitalize() for a in ['example', ' ', 'name']] # => ['Example', ' ', 'Name']
并将使用 isalnum()
条件进行过滤,检查字符串是否只包含字母数字字符(删除数组的 space 元素)
[a.capitalize() for a in ['example', ' ', 'name'] if a.isalnum()] # => ['Example', 'Name']
然后将使用分隔符 ''
(空字符串)进行连接。
''.join(a.capitalize() for a in ['example', ' ', 'name'] if a.isalnum()) # => 'ExampleName'
请向我解释以下 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") # => 示例名称
函数的输入是字符串。
isalnum()
:方法isalnum()
检查字符串是否由字母数字字符组成。
.join()
: Python String join() ,join() 是一个字符串方法,它 returns 一个字符串与 iterable
capitalize()
:它return是字符串的副本,只有第一个字符大写。
split()
:方法 split() return 是字符串中所有单词的列表。
以上理解将 return 给定输入字符串的输出
好的!正则表达式的东西一开始很难看和理解。首先,让我们将其分解为事情发生的顺序。让我们使用示例输入 "test_of wORd editor"
首先,我们用split('([^a-zA-Z0-9])', string)
将字符串分割成一个列表。这会根据 不是 字母(大写或小写)或数字的每个字符拆分。这会将我们的输入转换为 ['test', '_', 'of', ' ', 'wORd', ' ', 'editor']
.
接下来,我们将通过询问列表中的每个元素是否都是带有 .isalnum()
的字母数字来仅保留列表的一部分。如果不是,我们将忽略列表中的那部分。如果它是字母数字,我们对列表中的每个元素调用 .capitalize()
,这会将元素转换为除第一个字符以外的所有小写字母,它是大写字母。这是一个内置的 python 函数,它正在执行您想要的内容。这两部分一起使用 list comprehension 完成。我假设你知道那是什么。此输出将是 ['Test', 'Of', 'Word', 'Editor']
.
最后,我们需要将列表连接在一起再次成为一个字符串。 ''.join()
将列表中的每个元素无空格组合在一起,返回 'TestOfWordEditor'
.
camelize 函数将接收字符串 string
并将其拆分为连续的字母数字字符的字符串
split('([^a-zA-Z0-9])', "example name") # => ['example', ' ', 'name']
拆分结果的每个字符串都会大写
[a.capitalize() for a in ['example', ' ', 'name']] # => ['Example', ' ', 'Name']
并将使用 isalnum()
条件进行过滤,检查字符串是否只包含字母数字字符(删除数组的 space 元素)
[a.capitalize() for a in ['example', ' ', 'name'] if a.isalnum()] # => ['Example', 'Name']
然后将使用分隔符 ''
(空字符串)进行连接。
''.join(a.capitalize() for a in ['example', ' ', 'name'] if a.isalnum()) # => 'ExampleName'