如何在字符串中查找特殊字符

msc*_*c87 0 python string for-loop

我有一个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']
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 7

关于什么:

vowels = [ c for c in str1 if c in 'aeo' ]
Run Code Online (Sandbox Code Playgroud)

你得到的错误,因为当你遍历一个字符串,你遍历所有的字符的字符串(不字符串中指数),也因为'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']
Run Code Online (Sandbox Code Playgroud)

最后一条评论,你不应该is用来测试平等. 身份is测试.一个简单的测试:

a = 565
b = 565
print a == b #True
print a is b #False (!)
Run Code Online (Sandbox Code Playgroud)

原因是因为a并且b引用具有相同值的不同对象.