我有一个Python代码,想要在字符串中找到元音。 我写的代码如下....我尝试使用For-Loop的不同组合,但它会抛出两个不同的错误;
如何找到一行中的所有元音?
str1 = 'sator arepo tenet opera rotas'
vow1 = [str1[i] for i in str1 if str1[i] is 'a' | 'e' | 'o']
答案 0 :(得分:7)
怎么样:
vowels = [ c for c in str1 if c in 'aeo' ]
你遇到错误,因为当你循环一个字符串时,你会遍历字符串中的字符(而不是字符串 indices ),因为'a' | 'e' | 'o'
对字符串没有意义 - (它们不支持|
运算符)
>>> str1 = 'sator arepo tenet opera rotas'
>>> vowels = [ c for c in str1 if c in 'aeo' ]
>>> print vowels
['a', 'o', 'a', 'e', 'o', 'e', 'e', 'o', 'e', 'a', 'o', 'a']
最后一条评论,您不应使用is
来测试相等。 is
测试身份。一个简单的测试:
a = 565
b = 565
print a == b #True
print a is b #False (!)
原因是a
和b
引用具有相同值的不同对象。
答案 1 :(得分:2)
试试这段代码:
str1 = 'sator arepo tenet opera rotas'
i=0
vowl=''
for char in str1:
if char in 'aeiouAEIOU':
vowl=vowl+char+','
vowl=vowl[:-1]
print (vowl)
输出结果为:
a,o,a,e,o,e,e,o,e,a,o,a
答案 2 :(得分:0)
In [1]: str1 = 'sator arepo tenet opera rotas'
In [2]: filter(lambda x: x in 'aeiou', str1)
Out[2]: 'aoaeoeeoeaoa'