【发布时间】:2018-03-10 19:14:30
【问题描述】:
我有一个数据库和一个新的 unicode 输入。
if new_field != old_field:
update_db(new_field)
在 PyCharm 中两者看起来相同,即使当我将鼠标悬停并展开“视图”框时,我也会将它们复制粘贴到记事本中并且它们是相同的,例如:
u"<li>Laundromatic doofer drier £200 on collection</li>"
u"<li>Laundromatic doofer drier £200 on collection</li>"
造成错误的原因是井号的底层编码(为什么它不能有一个 pythonic 的单一方式?)。它们都是 unicode; type(new_field) is unicode.
我对此感到非常沮丧,以至于我将每个字段(大量销售宣传)分解为:
>set(old_field.split()) ^ set(new_field.split())
u'£200' # from new_field
u'£200' # from old_field
有没有更好的方法来比较 python 中的 unicode(我使用的是 2.7)?即比
更普遍的东西if new_field != old_field.replace(u"£", u"\xa3")
新字段来自网络,然后被传递给bleach.clean,我不得不将它传递给.encode("utf-8"),因为它显然会产生(sqlite3)非法字符来表示nbsp。旧字段在通过 bleach.clean 之前已从 sqlite 获取(作为事后的想法),它不需要 .encode("utf-8"),因为 sqlite 只存储 unicode。
【问题讨论】:
标签: python-2.7