大写连字符名称
Capitalizing hyphenated name
我有一个如下所示的脚本:
firstn = input('Please enter your first name: ')
lastn = input('Please enter Your last name: ')
print('Good day, ' + str.capitalize(firstn) + ' ' + str.capitalize(lastn)+ '!')
它可以很好地处理像 jack black 或 morgan meeman 这样的简单名字,但是当我输入像 jordan-bellfort image
这样的带连字符的名字时,我期望 "Jordan-Bellfort Image"
但我收到 "Jordan-bellfort Image"
。
如何让 python 将连字符后的字符大写?
您可以使用 title():
print('Good day,', firstn.title(), lastn.title(), '!')
来自控制台的示例:
>>> 'jordan-bellfort image'.title()
'Jordan-Bellfort Image'
Split the argument into words using str.split(), capitalize each word
using str.capitalize(), and join the capitalized words using
str.join()
import string
string.capwords(firstn, "-")
我建议只使用 str.title,这是一个比较您的版本和使用 str.title 方法的工作示例:
import string
tests = [
["jack", "black"],
["morgan", "meeman"],
["jordan-bellfort", "image"]
]
for t in tests:
firstn, lastn = t
print('Good day, ' + str.capitalize(firstn) +
' ' + str.capitalize(lastn) + '!')
print('Good day, ' + firstn.title() + ' ' + lastn.title() + '!')
print('-'*80)
结果为:
Good day, Jack Black!
Good day, Jack Black!
--------------------------------------------------------------------------------
Good day, Morgan Meeman!
Good day, Morgan Meeman!
--------------------------------------------------------------------------------
Good day, Jordan-bellfort Image!
Good day, Jordan-Bellfort Image!
--------------------------------------------------------------------------------
这是一个真正的问题!用 .title()
之类的似乎很容易解决,但这些建议并没有解决处理任何人名的实际问题。如 McCormack
、O'Brien
或 de Araugo
.
幸运的是,这个问题已经解决了。参见 nameparser
>>> from nameparser import HumanName
>>> name = HumanName('Shirley Maclaine') # Don't change mixed case names
>>> name.capitalize(force=True)
>>> str(name)
'Shirley MacLaine'
我有一个如下所示的脚本:
firstn = input('Please enter your first name: ')
lastn = input('Please enter Your last name: ')
print('Good day, ' + str.capitalize(firstn) + ' ' + str.capitalize(lastn)+ '!')
它可以很好地处理像 jack black 或 morgan meeman 这样的简单名字,但是当我输入像 jordan-bellfort image
这样的带连字符的名字时,我期望 "Jordan-Bellfort Image"
但我收到 "Jordan-bellfort Image"
。
如何让 python 将连字符后的字符大写?
您可以使用 title():
print('Good day,', firstn.title(), lastn.title(), '!')
来自控制台的示例:
>>> 'jordan-bellfort image'.title()
'Jordan-Bellfort Image'
Split the argument into words using str.split(), capitalize each word using str.capitalize(), and join the capitalized words using str.join()
import string
string.capwords(firstn, "-")
我建议只使用 str.title,这是一个比较您的版本和使用 str.title 方法的工作示例:
import string
tests = [
["jack", "black"],
["morgan", "meeman"],
["jordan-bellfort", "image"]
]
for t in tests:
firstn, lastn = t
print('Good day, ' + str.capitalize(firstn) +
' ' + str.capitalize(lastn) + '!')
print('Good day, ' + firstn.title() + ' ' + lastn.title() + '!')
print('-'*80)
结果为:
Good day, Jack Black!
Good day, Jack Black!
--------------------------------------------------------------------------------
Good day, Morgan Meeman!
Good day, Morgan Meeman!
--------------------------------------------------------------------------------
Good day, Jordan-bellfort Image!
Good day, Jordan-Bellfort Image!
--------------------------------------------------------------------------------
这是一个真正的问题!用 .title()
之类的似乎很容易解决,但这些建议并没有解决处理任何人名的实际问题。如 McCormack
、O'Brien
或 de Araugo
.
幸运的是,这个问题已经解决了。参见 nameparser
>>> from nameparser import HumanName
>>> name = HumanName('Shirley Maclaine') # Don't change mixed case names
>>> name.capitalize(force=True)
>>> str(name)
'Shirley MacLaine'