python - 从字符串中删除元音
问题描述
我想从要输入的任何字符串中删除所有元音。我试图使代码尽可能简单。
感谢您的帮助。
def anti_vowel(text):
for i in text:
i.strip(['i','o','a','u','e'])
return i
解决方案
所以你在每个字符上调用 strip ......然后呢?您不更新字符串,因为字符串是不可变的并且i.strip
不是就地操作。
对您的解决方案的一个天真的改进会在列表理解中过滤字符,然后join
对结果执行以下操作:
vowels = {'i','o','a','u','e'}
def anti_vowel(text):
return ''.join([c for c in text if c not in vowels])
一个小提示:如果您的字符串包含混合大小写,您可能想要
- 小写
text
,或 - 扩充
vowels
以包含大写元音:vowels = set('aeiouAEIOU')
, 或 使用
str.casefold
(根据@Adam Smith 的评论)——vowels
在这种情况下不再需要增强:return ''.join([c for c in text if c.casefold() not in vowels])
你可以变得更好(str.translate
这适用于python-3.x):
mapping = str.maketrans(dict.fromkeys(vowels, '')) # create a global mapping once
def anti_vowel(text):
return text.translate(mapping))
推荐阅读
- node.js - 在 Google 的云平台上定期运行 node.js 脚本的最简单方法是什么?
- apache-spark - 将 json 从 kinesis 读取到 pyspark 时出现问题
- vue.js - 当productionGzip为真时无法运行构建(VueJS)
- python-3.x - Seaborn 散点图图例未显示
- javascript - 如何控制div的滚动?
- java - 通过 python 或其他编程语言从谷歌网页获取翻译结果
- c# - Visual Studio MVC 5 无密码登录
- android - Android MPCharts x 轴自动换行重叠
- spring-webflux - 使用 tag() 进行日志记录
- android - android studios 没有刷新的令牌出现在 logcat