Replace Word, But Another Word With Same Letter Format Got Replaced
Solution 1:
That is because you replace bg before bgt (which is a bigger substring), you need to change the order.
Also, you don't need if any(x in word for x in "bg"), that checks if every letter is present in the word and not if the substring is present in the same order, plus, you don't need any verification before using str.replace, if the strin isn't there, it won't do anything
You just need
defslangwords(kalimat):
return kalimat.replace("bgt", "banget").replace("bg", "bang")
Better and not order-dependent
Use a dictionnary, and replace each word with its substitute
def slangwords(kalimat):
replacements = {
'bg': 'bang',
'bgt': 'banget'
}
words = kalimat.split(' ')
for i, word inenumerate(words):
words[i] = replacements.get(word, word)
return" ".join(words)
Solution 2:
You just need to reverse the order of replace:
def slangwords(kalimat):
words = kalimat.split(' ')
for word in words:
if any(x in word for x in "bgt"):
kalimat = kalimat.replace("bgt","banget")
if any(x in word for x in "bg"):
kalimat = kalimat.replace("bg","bang")
return kalimat
print(slangwords('bg bgt'))
If you would like to replace many words, you can put them in dictionary (note that the order matters here as well):
replace_words = { 'bgt' :'banget', 'bg': 'bang'}
defslangwords(kalimat):
words = kalimat.split(' ')
for word in words:
for wrd, repl in replace_words.items():
kalimat = kalimat.replace(wrd, repl)
return kalimat
Solution 3:
Here is another approach. You just need a dictionary of the substitutions. Using get enable to set the default value if the jey is missing (here the same word).
def slangwords(kalimat, sub={'bg': 'bang', 'bgt': 'banget'}):
return' '.join([sub.get(w, w) for w in kalimat.split(' ')])
>>> slangwords('bg bgt abc')
'bang banget abc'
Post a Comment for "Replace Word, But Another Word With Same Letter Format Got Replaced"