strip命令不会删除' e'在字符串中

时间:2017-04-18 17:25:27

标签: python python-3.x

我正在尝试从给定的单词中删除元音并返回单词。

例如

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'最终输出中是否存在?

2 个答案:

答案 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')