繁体   English   中英

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

[英]Converting Unicode Values as String from a Python Dictionary

我已经构建了一个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'函数和各种其他格式化和转换为字符串的方法,但我总是返回相同的原始值列表。 任何人都可以建议一种方法来完成我正在寻找的东西吗?

谢谢,迈克

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

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

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

我相信这就是你所追求的

for key, value in result.iteritems():
    print key + ": " +  str([ str(v) for v in value ])
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以将每个值更改为字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM