我正在尝试从给定的单词中删除元音并返回单词。
例如
word = "helleeEoo"
如果我使用如下所示的strip命令,我将得到" hell"而不是" hll"
word = word.strip("aAeEiIoOuU")
但如果我使用如下所示的join命令,它可以正常工作:
word = ''.join(c for c in word if c not in 'aAeEiIoOuU')
我正在使用python 3,我想知道为什么在strip命令的情况下' e'最终输出中是否存在?
答案 0 :(得分:6)
来自docs(强调我的):
返回字符串的副本,并删除前导字符。 chars参数是一个字符串,指定要删除的字符集。如果省略或None,则chars参数默认为删除空格。 chars参数不是前缀或后缀;相反,它的所有值组合都被剥离了:
...
最外层的前导和尾随字符参数值将从字符串中删除。从前端删除字符,直到到达字符集中未包含的字符串字符。在尾端也会发生类似的行为。
" e" strip
未被删除的任何内容都不在字符串的任何一端。它在中间,因此strip
不会触碰它。
在你的第二个例子中,c for c in word
触及字符串中的每个字符,因此中间的" e"触摸,由not in
测试,并省略。
答案 1 :(得分:1)
使用理解,而条带仅适用于字符串的末尾。
''.join(x for x in word if x not in 'aeiouAEIOU')