我在Python中有一個代碼,並且想要在字符串中找到元音。 我寫的代碼如下....我嘗試了使用For-Loop的不同組合,但它引發了兩個不同的錯誤;如何在字符串中查找特殊字符
- 「廉政」對象不是可迭代,
- 串指數必須是整數,不能海峽。
我怎樣才能找到一行中的所有元音?
str1 = 'sator arepo tenet opera rotas'
vow1 = [str1[i] for i in str1 if str1[i] is 'a' | 'e' | 'o']
我在Python中有一個代碼,並且想要在字符串中找到元音。 我寫的代碼如下....我嘗試了使用For-Loop的不同組合,但它引發了兩個不同的錯誤;如何在字符串中查找特殊字符
我怎樣才能找到一行中的所有元音?
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)
的輸出是:
一個,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'
不錯,但我可能會使用一組搜索元音:wanted_vowels = set('aeiouy'); c在seeking_vowels中。 「是」是針對None進行測試的好主意,但是對於其他測試來說是個壞主意。 – user1277476
@ user1277476 - 對於非常小的集合,不太可能會看到'set'和高度優化的字符串實現之間的顯着差異 - 快速時間表示每個循環的差異小於0.007 usec。在這種情況下,我認爲可以使用'str .__ contains__'或者'set .__ contains__' - 無論哪個OP更容易閱讀/理解。 – mgilson