首页 > 解决方案 > Python:将字符串中单词的第一个字符大写,除了一个单词

问题描述

我有字符串a = 'thirteen thousand and forty six'。该变量a将始终包含一定数量的单词。我想将字符串中每个单词的第一个字符大写,除了特定的单词'and'。这是我的代码,它可以正常工作:

b = []
for i in a.split():
    if i.lower() == 'and':
        b.append(i.lower())
    else:
        b.append(i.capitalize())
aa = " ".join(b)    #'Thirteen Thousand and Forty Six'

我试过的另一条单线是:

aa = " ".join([k.capitalize() for k in a.split() if k.lower() != 'and'])

但是,它'Thirteen Thousand Forty Six'作为结果字符串返回,省略了单词'and'

问题是是否有任何可能的使用列表理解或一些内置函数(不使用正则表达式)的单行器来完成这项工作?

标签: pythonpython-3.xstringlist-comprehension

解决方案


正确的语法应该是

aa = " ".join([k.capitalize() if k.lower() != 'and' else k for k in a.split()])

当您将if子句放在理解的末尾时,它将跳过不满足条件的元素。但是,您的要求是在项目为"and".


推荐阅读