Unacitalizing名字的第一个字母

时间:2016-10-13 03:59:43

标签: python string python-3.x

要为DeAnna这样的名称编码,请键入:

name = "de\aanna" 

print(name.title())

在此代码\a中,大写一个通常没有大写的字母。您编写了什么代码来生成"George von Trapp"之类的名称,我希望将大写字母大写为大写字母?

3 个答案:

答案 0 :(得分:5)

\a不会将字母大写 - 它是bell escape sequence

str.title只是将任何一组字母的第一个字母大写。由于钟不是字母,因此它与空格具有相同的含义。以下产生等效大写:

name = "de anna"
print(name.title())

无论如何,python中没有大写/非大写的魔术字符。只需正确写下名称即可。如果您同时需要正确版本和小写版本,请通过str.lower创建以后

name = "George von Trapp"
print(name, ':', name.lower())

如果您真的想要从"georg van trapp"(我只是假装关于\a的讨论已经结束)到"Georg van Trapp" - 欢迎来到 - 对决定 - 关于最语义的最语言 - 你 - 是 - 模仿。

  • 一个简单的方法是大写每个单词,但修复一些已知的单词。

    name = "georg van trapp"
    proper_name = name.title()
    proper_name.replace(' Von ', ' von ').replace(' Zu ', ' zu ').replace(' De ', ' de ')
    print(name, ':', proper_name)
    
  • 您可以使用list - 循环方法来减少头痛:

    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)
    

答案 1 :(得分:1)

为什么不为它自己动手?

 def capitalizeName(name):
     #split the name on spaces
     parts = name.split(" ")

     # define a list of words to not capitalize
     do_not_cap = ['von']

     # for each part of the name,
     # force the word to lowercase
     # then check if it is a word in our forbidden list
     # if it is not, then go ahead and capitalize it
     # this will leave words in that list in their uncapitalized state
     for i,p in enumerate(parts):
          parts[i] = p.lower()
          if p.lower() not in do_not_cap:
              parts[i] = p.title()

      # rejoin the parts of the word
      return " ".join(parts)

do_not_cap列表的要点是允许您进一步定义您可能不希望非常容易地利用的部分。例如,某些名称中可能包含“de”,您可能不希望大写。

这就是一个例子:

name = "geOrge Von Trapp"
capitalizeName(name)
# "George von Trapp"

答案 2 :(得分:-1)

  

你编码什么来生成像"de\aanna"这样的名字   想要取消大写字母的大写字母?

字母不会在Python中自动大写。在您的情况下,"de anna"(我认为您应该使用title()代替)是大写的,因为您在其上调用了title()。如果我没有误解你的问题,你想要的只是禁用这种“自动大写”。

请勿致电name = "George von Trapp" print(name.lower())

{{1}}