要编码像 DeAnna 这样的名字,您可以输入:
name = "de\aanna"
和
print(name.title())
在此代码中,\a
将一个通常不大写的字母大写。您编写什么代码来生成像 "George von Trapp"
这样的名称,我想在其中取消大写字母?
最佳答案
\a
没有大写字母 - 它是 bell escape sequence .
str.title
简单地将任何一组字母的第一个字母大写。由于铃铛不是字母,所以它与空格具有相同的含义。以下产生等效的大写:
name = "de anna"
print(name.title())
无论如何,python 中没有大写/取消大写的魔法字符。只需正确写下名称即可。如果您既想要正确的版本又想要小写版本,请通过 str.lower
创建 later:
name = "George von Trapp"
print(name, ':', name.lower())
如果你真的想从“georg van trapp”
开始(我只是假装关于\a
的讨论已经结束)到 “Georg van Trapp”
- 欢迎来到 having-to-decide-about-the-semantics-of-the-language-you-are-emulating。
一个简单的方法是将每个单词大写,但修正一些已知的。
name = "georg van trapp" proper_name = name.title() proper_name.replace(' Von ', ' von ').replace(' Zu ', ' zu ').replace(' De ', ' de ') print(name, ':', proper_name)
您也可以使用
list
-and-loop 方法来减少头痛:lc_words = ['von', 'van', 'zu', 'von und zu', 'de', "d'", 'av', 'af', 'der', 'Teer', "'t", "'n", "'s"] name = "georg van trapp" proper_name = name.title() for word in lc_words: proper_name = proper_name.replace(' %s ' % word.title(), ' %s ' % word) print(name, ':', proper_name)
如果名字的形式是
First Second byword Last
,除了倒数第二个单词之外的所有单词都可以大写:name = "georg fritz ferdinand hannibal van trapp" proper_name = name.title().split() # gets you the *individual* words, capitalized proper_name = ' '.join(proper_name[:-2] + [proper_name[-2].lower(), proper_name[-1]]) print(name, ':', proper_name)
任何短于四个字母的单词(警告,某些名称不可行!!!)
name = "georg fritz theodores ferdinand markus hannibal von und zu trapp" proper_name = ' '.join(word.title() if len(word) > 3 else word.lower() for word in name.split()) print(name, ':', proper_name)
关于python - 将名字的第一个字母取消大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012062/