在Ubuntu 13.10中使用python 2.7.4我正在通过字符串编码完成我的工作。
我有一个dict部分。这包括一些unicode字符串,例如:
[{'part_number': u'70-0018', 'name': 'Baseball caps', 'slug': u'70-0018', 'link': 'https://URL/index.php?path=info&part_uuid=13840f24-3819-11e2-9e3b-002564adbfd8'},
{'part_number': u'80-0002', 'name': 'Top Hats', 'slug': u'80-0002', 'link': 'https://URL/index.php?path=info&part_uuid=9ff5627e-3827-11e2-9e3b-002564adbfd8'}]
我想测试重复的slugs,因为我正在创建dict,并且在碰撞时添加一个修订号以保持唯一性:
for row in from_cur.fetchall():
n = row[0]
pt = row[1]
pn = row[2]
u = "https://URL/index.php?path=info&part_uuid="+row[3]
new_pn = u"%s-%s" %(pt,pn)
sl = slugify(new_pn)
if sl in parts:
for i in range(10):
new_sl = sl+"-%s" % str(i)
if new_sl in parts:
pass
else:
sl = new_sl
break
part = {"name":"%s" % n,"part_number":"%s" % new_pn, "link":"%s" % u, "slug":"%s" % sl}
parts.append(part)
我已尝试过“if sl in parts:”行:
sl,unicode(sl),sl.encode('utf-8'),str(sl),sl.decode('ascii'),sl.decode('unicode-escape'),sl.decode( 'UTF-8')
但是没有一个让我进入改变slug字段的if循环。
如何在字典中比较(或搜索)字符串与unicode? p>
答案 0 :(得分:1)
你没有显示最初声明parts
的位置,但是因为你稍后将dicts附加到它,我假设它是一个dicts列表。你开始时可能是空的。这种列表成员资格测试不起作用。这不是一个Unicode问题,你正在测试一个问题,看一个字符串是否在一个dicts列表中。
最好的解决方案是在你去的时候保持一套用过的slu ::
used_slugs = set()
for row in from_cur.fetchall():
...
if sl in used_slugs:
# do something to make a new slug
...
used_slugs.add(sl)
parts.append(part)