【发布时间】:2017-04-18 17:25:26
【问题描述】:
我正在尝试从给定单词中删除元音并返回该单词。
例如
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”?
【问题讨论】:
-
因为剩下的“e”不在字符串的开头或结尾。它受到“h”和“ll”的保护。
-
strip 方法只是从字符串的开头或结尾剥离字符。看看翻译。
-
@kindall .. 感谢更新.. 我认为 strip 会删除字符串中的所有字符实例,而不仅仅是第一个和最后一个。在我的示例中,由于尾随 O 被删除,即使中间的“e”也被删除。
-
无论什么文档给了你这个想法,扔掉它......
-
顺便说一句,传递
.join一个列表解析比传递一个生成器表达式更好。如果您传递.join一个迭代器,它必须从中创建一个列表,因为它需要扫描字符串两次。在第一次扫描时,它会计算总字符串长度,以便分配目标字符串,然后进行第二次扫描以将字符复制到目标。 Python 核心开发者 Raymond Hettinger 的This answer 显示了速度差异。
标签: python python-3.x