2012-11-01 86 views
1

我試圖查找字符串中的所有元音以替換它們。查找字符串中的特定字符

這是我一直在使用:

word = "abcde" 
vowels = "aeiou" 
v = list(vowels) 
hey = False 
for i in range(len(word)): 
    if word[i] == v: 
     hey = True 
print hey 

我試圖以取代用符號「$」字符串所有這些立場,但我想不通我怎麼能做到這一點線性搜索正確。

回答

3

根據假定這是針對某種類型的賦值/類,下面是一個簡單示例。您可以通過字符的字符串迭代,所以這個經歷在你的元音集合每個字母和你的字替換每個實例與$字符:

In [33]: s = 'abcde' 

In [34]: for c in 'aeiou': 
    ....:  s = s.replace(c, '$') 
    ....: 
    ....: 

In [35]: s 
Out[35]: '$bcd$' 

,並保持其簡單,做反向:

In [6]: s = 'abcde' 

In [7]: replace = '' 

In [8]: for c in s: 
    ...:  if c not in 'aeiou': 
    ...:   replace += c 
    ...: 
    ...: 

In [9]: for c in replace: 
    ...:  s = s.replace(c, '$') 
    ...: 
    ...: 

In [10]: s 
Out[10]: 'a$$$e' 

這不會惹上了很多可以在單/雙行處理這個其他非常酷的功能,但希望將作爲一個構建塊:)

+0

如果我想這樣做倒退怎麼辦,例如返回'a $$$ e'? – Flow

+0

@流你可以做相反的事。保持簡單,你可以創建一個名爲'replace ='''的字符串。然後你可以通過你的字符串's'做一個循環,檢查每個字符串,看它是否在你的元音列表中,如果是,則將該字符串附加到's'。然後你可以按照上面的答案做同樣的過程,但是可以用'替換'來代替'for'中的c。 – RocketDonkey

+0

@Flow我也假設這是爲了某種需要使用某些基本方法的練習,所以希望這可以起作用:) – RocketDonkey

3
"".join(("$" if char in vowels else char) for char in string) 
+1

'$'需要是一個字符串。 – kreativitea

3

使用正則表達式也許是最簡單:

(?i)意味着不分大小寫比較
[aeiou]指的A,E,I,O,或u

其餘是相當明顯的

import re 

s = 'alpha beta charlie delta echo foxtrot golf hotel' 
print re.sub('(?i)[aeiou]', '$', s) 
# $lph$ b$t$ ch$rl$$ d$lt$ $ch$ f$xtr$t g$lf h$t$l 

要麼,或str.translate

from string import maketrans 

to_dollar = 'aeiouAEIOU' 
trans = maketrans(to_dollar, '$' * len(to_dollar)) 
print s.translate(trans) 
# $lph$ b$t$ ch$rl$$ d$lt$ $ch$ f$xtr$t g$lf h$t$l 

要麼,或使用dict

lookup = dict.fromkeys('aeiouAEIOU', '$') 
print ''.join(lookup.get(c, c) for c in s) 
# $lph$ b$t$ ch$rl$$ d$lt$ $ch$ f$xtr$t g$lf h$t$l 
+0

''''應該是'''''... –

+0

@zero hehe,謝謝 - 不太清楚我是如何刪除粘貼的! –

+1

'a.get(c,c)'是一個非常方便的習慣用法,用於替換序列中的某些術語並將其餘部分獨立出來,甚至可以在字符串上下文中工作。 – DSM

0
word = "a quick brown fox" 
vowels = list("aeiou") 
hey = False 
for w in word: 
    hey = hey or w in vowels 

print hey 
1

您可以使用一組快速確定如果你遍歷字符是元音。設置的對象(通常)具有不變的查找時間而不是像列表一樣的線性查找時間。

vowels = set(vowels) 
''.join('$' if ch in vowels else ch for ch in string) 
+0

確實 - 但由於它的大小爲5,這並不重要。 – katrielalex