Python - 仅将字符串中每个单词的首字母大写
Python - Capitalize only first letter of each word in a string
我想检查第一个单词的第一个字符是否大写,如果没有,则将其大写,同时保留字符串的其余部分。
我试过以下方法:
import re
p = re.compile(r'((?<=[\.\?!]\s)(\w+)|(^\w+))')
def cap(match):
return(match.group().capitalize())
p.sub(cap, 'CBH1 protein was analyzed. to evaluate the report')
>>> Output : Cbh1 protein was analyzed. To evaluate the report
虽然这个输出几乎是正确的,但我预计最初的 Cbh1 是 CBH1。有什么建议吗?
这不是任何内置 str
方法的完美匹配:.title()
和 .capitalize()
将第一个字母后的所有字母小写,而 .upper()
将全部大写。
这并不优雅,但您可以明确地将第一个字母大写并附加其余字母:
def cap(match):
grp = match.group()
return grp[0].upper() + grp[1:]
>>> p.sub(cap, 'CBH1 protein was analyzed. to evaluate the report')
'CBH1 protein was analyzed. To evaluate the report'
您可以使用 [a-z]\w*
而不是 \w+
。这样你将只匹配真正需要大写的字符串。
我也会用这种方式修复正则表达式:
(?:(?<=[.?!]\s)|^)[a-z]\w*
我想检查第一个单词的第一个字符是否大写,如果没有,则将其大写,同时保留字符串的其余部分。
我试过以下方法:
import re
p = re.compile(r'((?<=[\.\?!]\s)(\w+)|(^\w+))')
def cap(match):
return(match.group().capitalize())
p.sub(cap, 'CBH1 protein was analyzed. to evaluate the report')
>>> Output : Cbh1 protein was analyzed. To evaluate the report
虽然这个输出几乎是正确的,但我预计最初的 Cbh1 是 CBH1。有什么建议吗?
这不是任何内置 str
方法的完美匹配:.title()
和 .capitalize()
将第一个字母后的所有字母小写,而 .upper()
将全部大写。
这并不优雅,但您可以明确地将第一个字母大写并附加其余字母:
def cap(match):
grp = match.group()
return grp[0].upper() + grp[1:]
>>> p.sub(cap, 'CBH1 protein was analyzed. to evaluate the report')
'CBH1 protein was analyzed. To evaluate the report'
您可以使用 [a-z]\w*
而不是 \w+
。这样你将只匹配真正需要大写的字符串。
我也会用这种方式修复正则表达式:
(?:(?<=[.?!]\s)|^)[a-z]\w*