gpt4 book ai didi

python - CamelCase 到间隔句子大小写正则表达式

转载 作者:行者123 更新时间:2023-12-01 04:25:46 24 4
gpt4 key购买 nike

快到了,但是我在正则表达式中发现了几个漏洞,无法将 CamelCase 转换为 Spaced Sentence Case。它在大多数情况下都表现良好(双关语),但它卡在第一个连字符的单词上。我不明白为什么。

import re

# ---------------------------------------------------------
def camelCaseToSpacedTitleCase(u):
# add spaces
regex = re.sub("(.)([A-Z][a-z-]+)", r"\1 \2", u)

# make title case
regex = re.sub("([a-z0-9])([A-Z])", r"\1 \2", regex)

# keep CAPITALISED words
regex = re.sub("(^|\s)(\S)", r"\1" + r"\2".upper(), regex)

# keep Mc and Mac
regex = re.sub("(Mc|Mac)(\s)", r"\1", regex)

# keep digits
regex = re.sub("([a-z]+)([0-9]+\s)", r"\1 \2", regex)

# keep I or A
regex = re.sub("(\sA|\sI)([A-Z])([a-z]*)", r"\1 \2\3", regex)

# remove double whitespaces
regex = re.sub("\s{2,32}", r" ", regex)

return regex


test1 = "TheAmazingSpider-Man"
test2 = "WeAreSexBob-Omb"
test3 = "SR-128 SomethingSomething"
test4 = "Ex-Voto - Monitor"
test5 = "FergusMcNeilEyeContact"
test6 = "It'sABanana"
test7 = "HouseOf1000Zombies!"

print (camelCaseToSpacedTitleCase(test1))
print (camelCaseToSpacedTitleCase(test2))
print (camelCaseToSpacedTitleCase(test3))
print (camelCaseToSpacedTitleCase(test4))
print (camelCaseToSpacedTitleCase(test5))
print (camelCaseToSpacedTitleCase(test6))
print (camelCaseToSpacedTitleCase(test7))

我希望看到

"The Amazing Spider-Man" 
"We Are Sex Bob-Omb"
"SR-128 Something Something"
"Ex-Voto - Monitor"
"Fergus McNeil Eye Contact"
"It's A Banana"
"House Of 1000 Zombies!"

由于上述原因,我想避免使用 .titlecase()

最佳答案

这种类型的处理可能很棘手。我认为您看到的问题是在您第一次添加空格时的第一步。仅当拆分前面没有连字符时才应用,而不是向任何驼峰式大小写拆分添加空格。

# Replace: regex = re.sub("(.)([A-Z][a-z-]+)", r"\1 \2", u)
regex = re.sub("([^-])([A-Z][a-z-]+)", r"\1 \2", u)

给出以下结果...

# The Amazing Spider-Man
# We Are Sex Bob-Omb
# SR-128 Something Something
# Ex-Voto - Monitor
# Fergus McNeil Eye Contact
# It's A Banana
# House Of 1000 Zombies!

关于python - CamelCase 到间隔句子大小写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158715/

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