python - 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'
。
问题是是否有任何可能的使用列表理解或一些内置函数(不使用正则表达式)的单行器来完成这项工作?
解决方案
正确的语法应该是
aa = " ".join([k.capitalize() if k.lower() != 'and' else k for k in a.split()])
当您将if
子句放在理解的末尾时,它将跳过不满足条件的元素。但是,您的要求是在项目为"and"
.
推荐阅读
- java - 在 Java 中使用合并排序对链接列表进行排序
- php - 图像保存为 tmp 文件
- wordpress - 如何修复 WordPress 中的这些 404 错误?
- android - 在 cordova/phonegap Android 应用程序上关闭屏幕后媒体停止播放
- python - 正则表达式向后匹配任何内容,直到第一次出现字符串
- javascript - 每 X 秒获取一次计数,加载超过 10 亿个 XHR 请求
- java - 如何在 Angular 5 中未经授权使用主页中的实体数据
- r - R中的DCC GARCH:观察次数
- python-3.x - (算法)在 Python 中找到穿过所需节点集(可能使用 BFS)并返回原点的最短路径
- r - 循环将年份分为两部分