python - 将名字的第一个字母取消大写

标签 python string python-3.x

要编码像 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/

相关文章:

c# - 如何将字符串 "1900-01-01 08:00:00.000"格式化为 HH :MM and add 30 minutes to it?

python - 如何用迭代器修改可迭代对象的元素? IE。如何在 Python 中获取写迭代器?

python - 如何设置Scrapy规则仅解析/浏览/页面?

python - 如何在@pytest.mark.parametrize 上使用类变量

python - 无法打开 40 针接头上的 UART

PHP 替换 HTML 标签以外的字符

java - 使用 new 运算符的 String 对象有多少

python - 重复计数循环(n*n码性能)

python - Python 何时检查 ABC 的具体子类是否实现了所需的方法?

python - 如何在 Python 的某些条件下根据其他列表中的索引列表从一个列表中查找字符串?