我試圖查找字符串中的所有元音以替換它們。查找字符串中的特定字符
這是我一直在使用:
word = "abcde"
vowels = "aeiou"
v = list(vowels)
hey = False
for i in range(len(word)):
if word[i] == v:
hey = True
print hey
我試圖以取代用符號「$」字符串所有這些立場,但我想不通我怎麼能做到這一點線性搜索正確。
我試圖查找字符串中的所有元音以替換它們。查找字符串中的特定字符
這是我一直在使用:
word = "abcde"
vowels = "aeiou"
v = list(vowels)
hey = False
for i in range(len(word)):
if word[i] == v:
hey = True
print hey
我試圖以取代用符號「$」字符串所有這些立場,但我想不通我怎麼能做到這一點線性搜索正確。
根據假定這是針對某種類型的賦值/類,下面是一個簡單示例。您可以通過字符的字符串迭代,所以這個經歷在你的元音集合每個字母和你的字替換每個實例與$
字符:
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'
這不會惹上了很多可以在單/雙行處理這個其他非常酷的功能,但希望將作爲一個構建塊:)
使用正則表達式也許是最簡單:
(?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
''''應該是'''''... –
@zero hehe,謝謝 - 不太清楚我是如何刪除粘貼的! –
'a.get(c,c)'是一個非常方便的習慣用法,用於替換序列中的某些術語並將其餘部分獨立出來,甚至可以在字符串上下文中工作。 – DSM
word = "a quick brown fox"
vowels = list("aeiou")
hey = False
for w in word:
hey = hey or w in vowels
print hey
您可以使用一組快速確定如果你遍歷字符是元音。設置的對象(通常)具有不變的查找時間而不是像列表一樣的線性查找時間。
vowels = set(vowels)
''.join('$' if ch in vowels else ch for ch in string)
確實 - 但由於它的大小爲5,這並不重要。 – katrielalex
如果我想這樣做倒退怎麼辦,例如返回'a $$$ e'? – Flow
@流你可以做相反的事。保持簡單,你可以創建一個名爲'replace ='''的字符串。然後你可以通過你的字符串's'做一個循環,檢查每個字符串,看它是否在你的元音列表中,如果是,則將該字符串附加到's'。然後你可以按照上面的答案做同樣的過程,但是可以用'替換'來代替'for'中的c。 – RocketDonkey
@Flow我也假設這是爲了某種需要使用某些基本方法的練習,所以希望這可以起作用:) – RocketDonkey