我有一个 Python 代码,想在字符串中查找元音。我编写的代码如下......我尝试了使用 For-Loop 的不同组合,但它引发了两个不同的错误;
- 'int' 对象不可迭代,
- 字符串索引必须是整数,而不是 str。
如何找到一行中的所有元音?
str1 = 'sator arepo tenet opera rotas'
vow1 = [str1[i] for i in str1 if str1[i] is 'a' | 'e' | 'o']
关于什么:
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 (!)
原因是因为a
和b
引用不同的对象具有相同的值。
试试这个代码:
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
In [1]: str1 = 'sator arepo tenet opera rotas'
In [2]: filter(lambda x: x in 'aeiou', str1)
Out[2]: 'aoaeoeeoeaoa'