首页 > 解决方案 > 给定的字符串没有在python中转换成camelCase?

问题描述

最近我function在 python 中做了一个转换任何camelCase格式的字符串,但是当我在这个函数中传递不同类型的字符串时,当我尝试传递"BirdFlight"它时遇到了一个问题,它没有将它转换为camelCase.

注意- 我使用了 python 内置re模块。

import re

def camelCase(string):
    string = re.sub(r'(_|-)+', ' ', string).title().replace(' ', '')
    
    return ''.join([string[0].lower() + string[1:]])

之后,我创建了list3 种不同类型的字符串来传递函数。

differentTypeOfString = ['bird flight', 'BirdFlight', '-BIRD-FLIGHT-']

for i in differentTypeOfString:
    print(camelCase(i))

忽略变量名称,我将在之后更改它。

输出

#1 birdFlight
#2 birdflight
#3 birdFlight

那么我刚才遇到的问题还有很多。我增加了列表中的字符串类型:

differentTypeOfString = ['bird flight', 'BirdFlight', '-BIRD-FLIGHT-', 'Bird-Flight', 'bird_flight', '--bird.flight', 'Bird-FLIGHT', 'birdFLIGHT']

现在我得到这个输出

#1 birdFlight
#2 birdflight
#3 birdFlight
#4 birdFlight
#5 birdFlight
#6 bird.Flight
#7 birdFlight
#8 birdflight

“。”"birdFLIGHT"中的和同样的问题。"--bird.flight"(点)没有删除。

标签: pythonstringfunctionpython-modulecamelcasing

解决方案


这适用于您当前的示例。在任何现有的re.sub<lower><upper> 序列之间添加一个空格。

import re

def camelCase(string):
    string = re.sub(r'(?:(?<=[a-z])(?=[A-Z]))|[^a-zA-Z]', ' ', string).title().replace(' ', '')
    return ''.join([string[0].lower() + string[1:]])

differentTypeOfString = ['bird flight', 'BirdFlight', '-BIRD-FLIGHT-', 'Bird-Flight', 'bird_flight', '--bird.flight', 'Bird-FLIGHT', 'birdFLIGHT']

for i in differentTypeOfString:
    print(camelCase(i))

输出:

birdFlight
birdFlight
birdFlight
birdFlight
birdFlight
birdFlight
birdFlight
birdFlight

推荐阅读