在 / 之后在字符串中保留大写字母

Keep uppercase after / in a string

我正在尝试为以下字符串命名:

"Men's L/S long sleeve"

我现在正在使用 string.capwords,但它没有按预期工作。

例如:

x = "Men's L/s Long Sleeve"
y = string.capwords(x)
print(y)

输出:

Men's L/s Long Sleeve

但我想要:

Men's L/S Long Sleeve(/后面的大写S)

有没有简单的方法可以做到这一点?

按 / 拆分,然后 运行 在所有组件上分别使用 capwords,然后重新加入组件

text = "Men's L/s Long Sleeve"
"/".join(map(string.capwords, text.split("/")))
Out[10]: "Men's L/S Long Sleeve"

您可以在“/”处拆分字符串,在每个子字符串上使用 string.capwords,然后在“/”处重新加入:

import string

'/'.join(string.capwords(s) for s in "Men's L/S long sleeve".split('/'))

听起来 / 可能不是需要大写字母的可靠指标。如果更可靠的指标实际上是该字母最初是大写的,您可以尝试遍历每个字符串并仅提取提升为大写的字母:

import string
x = "Men's L/S long sleeve"
y = string.capwords(x)
z = ''
for i,l in enumerate(x):
    if(l.isupper()):
        z += l
    else:
        z += y[i]

所以在像这样的字符串上:

"brand XXX"
"shirt S/M/L"
"Upper/lower"

您将获得:

"Brand XXX"
"Shirt S/M/L"
"Upper/lower"

我认为这可能比使用 / 作为指标更可取。