从python中的列表过滤对象

时间:2015-07-14 17:14:07

标签: python string list

我试图编写一些可以从一串文字中过滤掉所有元音的内容,而且我不确定为什么我的功能不起作用。这是我的代码

gl_Position = model * view * projection * vec4(position, 0.0, 1.0);

在迭代字母时,当字母中的对象是元音时,应该激活if子句吗?所以它应该删除该对象。但是我做错了什么?

5 个答案:

答案 0 :(得分:5)

我会使用re.sub

re.sub(r'(?i)[AEIOU]', '', st)

<强>解释

  • (?i)不区分大小写的修饰符有助于进行不区分大小写的匹配。
  • [AEIOU]匹配给定列表中的任何一个charcater。由于我们已经添加了不区分大小写的修饰符,因此它将匹配大写和小写元音。

答案 1 :(得分:4)

您的代码不是通过字母迭代,而是通过单词进行迭代。这是因为text.split()将您的文本拆分为list空格分隔的&#34;字&#34;字符串。

下一个问题是您正在迭代list并删除条目。迭代一个迭代迭代它是一个奇怪结果的常见原因。

相反,做这样的事情:

def anti_vowel(text):
    return ''.join(filter(lambda x: x.lower() not in 'aeioe', text))

结果:

>>> anti_vowel('hi my name is joe')
'h my nm s j'

答案 2 :(得分:2)

我更喜欢Avinash的方法,但是如果你想修复你的impl。这是怎么做的:

var result = [];
result.push({success : 1});
var emails = []
for (var i = 0; i < rows.length; i++) {
    emails.push(rows[i].email);
};
result.push({email: emails})

答案 3 :(得分:1)

''.join(c for c in text if c.lower() not in 'aeiou')

这使用生成器表达式来查看字符串中的每个字母,并且只有在它不是元音时才保留它(它的小写不在&#39; aeiou&#39;),然后加入这些有效字符。 / p>

答案 4 :(得分:1)

你可以使用列表理解并创建类似这样的东西

def anti_vowel2(text):
    return "".join([x for x in text if x.lower() not in 'aeiou'])

print(anti_vowel2("test"))

输出字符串tst