是否可以使用字符串格式将单词大写?例如
"{user} did such and such.".format(user="foobar")
应该返回“Foobar做了这样那样的事情”
注意,我很清楚.capitalize()
;但是,这里有一个(非常简化的版本)代码,我正在使用:
printme = random.choice(["On {date}, {user} did la-dee-dah. ",
"{user} did la-dee-dah on {date}. "
])
output = printme.format(user=x,date=y)
如您所见,仅在.format()
中将user
定义为x.capitalize()
是行不通的,因为这样它也会(错误地)应用于第一个场景。因为我无法预测命运,所以无法提前知道选择哪个random.choice
。我能做什么?
Addt'l注意:只做output = random.choice(['xyz'.format(),'lmn'.format()])
(换句话说,分别格式化每个字符串,然后对需要它的字符串使用.capitalize()
)不是一个可行的选项,因为printme
实际上是从~40+个字符串中进行选择。
正如@IgnacioVazquez Abrams所说,创建^{} 的子类,允许您扩展/更改格式字符串处理。
在您的情况下,必须重载方法
convert_field
您可以创建自己的^{} 子类,该子类将允许您识别自定义的conversion,您可以使用该自定义的conversion来重新设置字符串。
您可以传递额外的值而不使用它们,就像这个轻量级选项一样
最好的选择可能取决于你是否做得足够,需要你自己的全面
Formatter
。相关问题 更多 >
编程相关推荐