我正在尝试为以下字符串命名:
"Men's L/s button-up"
我现在正在使用string.capwords
,但它没有按预期工作。你知道吗
例如:
x = "Men's L/s button-up"
y = string.capwords(x)
print(y)
输出:
Men's L/s Button-up
但我想:
Men's L/S Button-Up
(大写的S在/后面,大写的U在-)
一般来说,如何确保空格或标点后面的所有字母都大写?你知道吗
这是以下方面的后续行动:
Keep uppercase after / in a string
Tags:
string.capwords
对此不起作用,因为它在内部使用str.split()
来生成令牌(docs)。str.split()
只能在运行空格(默认行为)或使用用户指定的字符/字符串(docs)时拆分。如果指定了字符串,则将其视为一个整体,而不是分隔字符。你知道吗为了达到您的目的,我将使用正则表达式,例如:
re.sub
(docs)可用于替换给定字符串中的子字符串。第二个参数是一个函数,它接受match object参数并返回替换字符串(在本例中,我们将完全匹配的字符串大写)。你知道吗如果你无意中发现了这个问题,也一定要看看下面的@Christian answer,因为它提供了一种很好的分割字符串的方法:)
我的方法是将每个要大写的单词分开(使用
re.split
),将所说的单词大写(使用str.capitalize
),然后重新组合这些单词得到一个字符串(使用str.join
):如果需要拆分更多标点字符,只需将它们添加到正则表达式中即可。例如,如果您确定需要在撇号后大写单词/字符,请添加:
对正则表达式执行以下操作:
相关问题 更多 >
编程相关推荐