0

我有一个 Python 代码,想在字符串中查找元音。我编写的代码如下......我尝试了使用 For-Loop 的不同组合,但它引发了两个不同的错误;

  1. 'int' 对象不可迭代,
  2. 字符串索引必须是整数,而不是 str。

如何找到一行中的所有元音?

str1 = 'sator arepo tenet opera rotas'
vow1 = [str1[i] for i in str1 if  str1[i] is 'a' | 'e' | 'o']
4

3 回答 3

7

关于什么:

vowels = [ c for c in str1 if c in 'aeo' ]

您会收到错误,因为当您遍历字符串时,您会遍历字符串的字符(而不是字符串索引),并且因为'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 (!)

原因是因为ab引用不同的对象具有相同的值

于 2012-10-30T15:11:51.513 回答
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

于 2012-10-30T15:36:05.180 回答
0
In [1]: str1 = 'sator arepo tenet opera rotas'
In [2]: filter(lambda x: x in 'aeiou', str1)
Out[2]: 'aoaeoeeoeaoa'
于 2012-10-30T21:00:03.753 回答