从Python字典中将Unicode值转换为字符串

时间:2013-09-18 18:28:40

标签: python dictionary python-unicode

我已经构建了一个python字典,如下所示:

result = {}
for fc in arcpy.ListFeatureClasses():
    for field in arcpy.ListFields(fc):
        result.setdefault(field.name, []).append(fc)

,它获取每个表(要素类)中字段的名称,并将tyhem设置为字典中的键值,然后将表的名称设置为值。这很好,因为我的目标是找出哪些表具有相同的字段。我可以继续讨论这些项目并打印出关键的值对:

for key, value in result.iteritems():
    print key + ": " +  str(value)

返回:

  

评论:[u'TM_FC',u'GT_FC',u'HG_FC',u'PO_FC',u'FU_FC']

我想将键值打印出来作为字符串值而不是unicode的东西,所以它看起来像这样:

评论:'TM_FC','GT_FC','HG_FC','PO_FC','FU_FC'

我一直在使用'str'函数和各种其他格式化和转换为字符串的方法,但我总是返回相同的原始值列表。任何人都可以建议一种方法来完成我正在寻找的东西吗?

谢谢, 麦克

3 个答案:

答案 0 :(得分:2)

您的代码中的问题是您正在调用str(value),其中value是一个数组。所以会发生的是,数组对象的__str__函数被调用,并且它有自己的方式来生成基础值的字符串表示。此默认表示使用repr来显示单个元素的值。因为在这种情况下数组元素是unicode字符串,所以在输出中看到'u'。

作为一种解决方案,您要做的是手动“展开”数组并构建自己的列表表示。这是一种方法:

for key, value in result.iteritems():
    print key + ": " +  ",".join(["'%s'" % v for v in value])

答案 1 :(得分:0)

我相信这就是你追求的目标

for key, value in result.iteritems():
    print key + ": " +  str([ str(v) for v in value ])

答案 2 :(得分:0)

result = {u'Comments':[u'TM_FC', u'GT_FC', u'HG_FC', u'PO_FC', u'FU_FC']}
for k,v in result.iteritems():
    print u'%s:%s' % (k,map(unicode.encode,v))

使用字符串格式简化,map使用默认编码将每个值更改为字符串。