gpt4 book ai didi

python - 拆分 UpperCamelCase 和 UPPERCamelCase 以分隔单词

转载 作者:行者123 更新时间:2023-12-01 08:05:56 24 4
gpt4 key购买 nike

我想做的是将 UpperCamelCase 和 UPPERCamelCase 字符串拆分为不同的单词。我们有命名约定,其中缩写以大写形式开头。

例如。 SFTP服务器

我想要完成的是将其分成两个词SFTPServer

对于 UpperCamelCase,我能够使用以下代码

r="SftpServer"
print(' '.join(re.findall('^[a-z]+|[A-Z][^A-Z]*', r)))

输出:

Sftp Server

问题:有没有办法调整这个正则表达式,以便我可以获得两种情况的输出

即。 SFTPServerSftpServer

我还将提及我的用例,因为它可能会进一步提供对问题的一些见解。我正在尝试将列名转换为 Flask 和 SQL Server 中的标签。

def get_label_names():
cursor=CONN.cursor()
db_name=CONFIG['DB']['DATABASE']['NAME']
cursor.execute('use '+db_name)
cursor.execute(f"""\
SELECT COLUMN_NAME
FROM {db_name}.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Client'
"""
)
col_info=[item[0] for item in cursor.fetchall()]
labels=[' '.join(re.findall('^[a-z]+|[A-Z][^A-Z]*', r)) for r in col_info]
return labels

最佳答案

我们最好的选择可能是re.findall,因为它允许使用前瞻,而re.split则不允许。我们可以尝试分开以下模式:

[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]+|[A-Z]+$

此模式表示匹配:

[A-Z]{2,}(?=[A-Z][a-z])

两个或多个大写字母,直到达到大写字母后跟一个小写字母(表示下一个驼峰式单词的开始)。

[A-Z][a-z]+

驼峰式单词,由一个大写字母后跟一个或多个小写字母组成。

[A-Z]+$

任意数量的连续结尾大写字母。

代码:

input = "SFTPServerABC"
results = re.findall(r'[A-Z]{2,}(?=[A-Z][a-z])|[A-Z][a-z]+|[A-Z]+$', input)
print(results)

['SFTP', 'Server', 'ABC']

关于python - 拆分 UpperCamelCase 和 UPPERCamelCase 以分隔单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55532792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com