我已经下载了双联音电话功能:https://github.com/dracos/double-metaphone
它应该像这样工作:
>>> dm(u'aubrey')
('APR', '')
>>> dm(u'richard')
('RXRT', 'RKRT')
>>> dm(u'katherine') == dm(u'catherine')
True
如何将变量传递给此函数?你总是在路上。我需要能够做到
dm(x)==dm(y)
现在发生这种情况:
>>> x='wal mart'
>>> y='wall mart'
>>> dm(x)==dm(y)
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
dm(x)==dm(y)
File "<pyshell#18>", line 6, in dm
st = ''.join((c for c in unicodedata.normalize('NFD', st) if unicodedata.category(c) != 'Mn'))
TypeError: normalize() argument 2 must be unicode, not str
答案 0 :(得分:6)
u''
是文字unicode
字符串对象的语法,与常规str
对象相当,但它可以处理Unicode字符。
>>> type('foobar')
<type 'str'>
>>> type(u'foobar')
<type 'unicode'>
>>> 'foobar' == u'foobar'
True
只要您正在呼叫的功能接受您的输入,您就不需要u
。例如:
x = u'richard'
dm(x)
您收到TypeError,因为该函数需要unicode
个对象,并且您正在传递str
个对象。改变这些行:
x='wal mart'
y='wall mart'
要:
x=u'wal mart'
y=u'wall mart'
如果您要使用str
个对象,则可以使用unicode
构造函数将它们转换为unicode()
个对象:
x='wal mart'
y='wall mart'
dm(unicode(x)) == dm(unicode(y))
答案 1 :(得分:3)
a = u'katherine'
b = u'catherine'
dm(a) == dm(b)