我试图编写一些可以从一串文字中过滤掉所有元音的内容,而且我不确定为什么我的功能不起作用。这是我的代码
gl_Position = model * view * projection * vec4(position, 0.0, 1.0);
在迭代字母时,当字母中的对象是元音时,应该激活if子句吗?所以它应该删除该对象。但是我做错了什么?
答案 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