Python title()认为撇号是一个新单词的开始。为什么?
这肯定是错误的。为什么撇号会被认为是一个新词的开头。这是一个问题还是我认为标题的概念有问题?因为实现通过查看前一个字符来工作,如果是字母数字,则将当前字符小写,否则将大写。也就是说,它相对简单,下面是它的纯python版本:Python title()认为撇号是一个新单词的开始。为什么?,python,string,title,Python,String,Title,这肯定是错误的。为什么撇号会被认为是一个新词的开头。这是一个问题还是我认为标题的概念有问题?因为实现通过查看前一个字符来工作,如果是字母数字,则将当前字符小写,否则将大写。也就是说,它相对简单,下面是它的纯python版本: >>> myStr="madam. i'm adam! i also tried c,o,m,m,a" >>> myStr.title() "Madam. I'M Adam! I Also Tried C,O,M,M,A" 您可以使用:
>>> myStr="madam. i'm adam! i also tried c,o,m,m,a"
>>> myStr.title()
"Madam. I'M Adam! I Also Tried C,O,M,M,A"
您可以使用:
string.capwords()
而且,由于
title()
依赖于区域设置,请检查您的区域设置以确定这是否是有意的:
locale.localeconv()
将本地约定的数据库作为 字典
title()
返回字符串的基于标题的版本:单词以开头 大写字符,其余所有大小写字符均为小写。对于8位字符串,此方法依赖于区域设置 title方法将字符串中每个单词的第一个字母大写(并将其余字母小写)。单词被标识为字母字符的子字符串,这些子字符串由非字母字符(如数字或空格)分隔。这可能会导致一些意外的行为。例如,字符串“x1x”将转换为“x1x”,而不是“x1x” 基本上,按预期工作。由于撇号实际上是非字母的,因此您会得到上面概述的“意外行为” 谷歌搜索显示,其他人认为这并不完全是最好的,并且已经编写了替代实现。请参阅:这里的问题是,“标题格”是一个非常依赖文化的概念。即使在英语中,角落里的箱子也太多了,无法容纳所有的箱子。(另见)
如果你想要更好的东西,你需要考虑你想要处理什么类型的文本(这意味着你不正确地处理其他文本),然后编写你自己的函数。我不知道为什么这个方法甚至出现在标准库中。它太“蠢”了,没有实际用途,所以它只会使API膨胀。+1。同意。我只想知道还有多少其他这样无用的方法存在于更多的模块中。(耸耸肩)
def title(string):
result = []
prev_letter = ' '
for ch in string:
if not prev_letter.isalpha():
result.append(ch.upper())
else:
result.append(ch.lower())
prev_letter = ch
return "".join(result)
# Capitalize the words in a string, e.g. " aBc dEf " -> "Abc Def".
def capwords(s, sep=None):
"""capwords(s, [sep]) -> string
Split the argument into words using split, capitalize each
word using capitalize, and join the capitalized words using
join. Note that this replaces runs of whitespace characters by
a single space.
"""
return (sep or ' ').join(x.capitalize() for x in s.split(sep))