我正在尝试为以下字符串命名:
“男士 L/s 纽扣式”
我现在正在使用 string.capwords,但它没有按预期工作。
例如:
x = "Men's L/s button-up"
y = string.capwords(x)
print(y)
输出:
男士 L/s 纽扣式
但我想要:
男士 L/S Button-Up(/后为大写 S,- 后为大写 U)
更一般地说,如何确保空格或标点符号后的所有字母都大写?
这是后续的:
请您参考如下方法:
string.capwords 对此不起作用,因为在内部,它使用 str.split() 生成标记 ( docs )。 str.split() 只能在出现空格(默认行为)或使用用户指定的字符/字符串 ( docs) 时拆分。如果指定了字符串,则将其视为一个整体,而不是分隔的字符。
为了实现你想要的,我会使用正则表达式,例如:
import re
x = "Men's L/s button-up"
y = re.sub(r'[\w]+', lambda m: m.group(0).capitalize(), x)
print(y)
# "Men'S L/S Button-Up"
re.sub ( docs ) 可用于替换给定字符串中的子字符串。第二个参数是一个接受 match object 的函数。参数并返回替换字符串(在这种情况下,我们将完整匹配项大写)。
如果您无意中遇到了这个问题,请务必查看下面的@Christian 回答,因为它提供了一种很好的拆分字符串的替代方法:)
