Is there a soundex function for python?
Is there a soundex function for python?
Yes , you can use Fuzzy which is a python library implementing some phonetic algorithms.
sudo pip install fuzzy
>>> import fuzzy
>>> soundex = fuzzy.Soundex(4)
>>> soundex(Jackson)
J250
>>> soundex(Washington)
W252
>>> soundex(Clement)
C453
>>> soundex(Ashcraft)
A261
>>> soundex(Wu)
W000
You can use jellyfish
sudo pip install jellyfish
print Soundextt=, jellyfish.soundex(Ala ma kaca)
>Soundex = A452
#...
>Metaphone = AL M KK
>NYSIIS = AL
>Match rating codex = ALMKC
Is there a soundex function for python?
Use the below soundex()
function directly without installing any package!
Snippet taken from package
Jellyfish >
_jellyfish.py
Examples
print(soundex(kent)) # K530
print(soundex(Paul)) # P400
print(soundex(amnesty)) # A523
Code
import unicodedata
def soundex(s):
if not s:
return
s = unicodedata.normalize(NFKD, s)
s = s.upper()
replacements = (
(BFPV, 1),
(CGJKQSXZ, 2),
(DT, 3),
(L, 4),
(MN, 5),
(R, 6),
)
result = [s[0]]
count = 1
# find would-be replacment for first character
for lset, sub in replacements:
if s[0] in lset:
last = sub
break
else:
last = None
for letter in s[1:]:
for lset, sub in replacements:
if letter in lset:
if sub != last:
result.append(sub)
count += 1
last = sub
break
else:
if letter != H and letter != W:
# leave last alone if middle letter is H or W
last = None
if count == 4:
break
result += 0 * (4 - count)
return .join(result)