擅长:python、mysql、java
<p><code>string.capwords</code>对此不起作用,因为它在内部使用<code>str.split()</code>来生成令牌(<a href="https://docs.python.org/3.5/library/string.html#string.capwords" rel="nofollow noreferrer">docs</a>)。<code>str.split()</code>只能在运行空格(默认行为)或使用用户指定的字符/字符串(<a href="https://docs.python.org/3.5/library/stdtypes.html#str.split" rel="nofollow noreferrer">docs</a>)时拆分。如果指定了字符串,则将其视为一个整体,而不是分隔字符。你知道吗</p>
<p>为了达到您的目的,我将使用正则表达式,例如:</p>
<pre><code>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"
</code></pre>
<p><code>re.sub</code>(<a href="https://docs.python.org/3/library/re.html#re.sub" rel="nofollow noreferrer">docs</a>)可用于替换给定字符串中的子字符串。第二个参数是一个函数,它接受<a href="https://docs.python.org/3/library/re.html#match-objects" rel="nofollow noreferrer">match object</a>参数并返回替换字符串(在本例中,我们将完全匹配的字符串大写)。你知道吗</p>
<p>如果你无意中发现了这个问题,也一定要看看下面的@Christian answer,因为它提供了一种很好的分割字符串的方法:)</p>