我创建了一个词典
store = {'assetType': "['props','char','env','sets']", 'Height': '871', 'Project': 'AnimationProject1', 'Width': '2048', 'FPS': '24', 'Type': 'Animation', 'Unit': 'cm'}
这是在xml文件中,因此我使用xml.etree.ElementTree
来解析文件,find
,findall
和iter
来访问xml文件,上面的行是我到底得到了什么。我使用for循环来访问xml文件
import xml.etree.ElementTree as xml
read = xml.parse(xmlFile)
#xmlFile is the xmlFile directory
findBase = read.findall('base')
#'base' and 'type' are the xml.SubElement used in the xml file.
for child in findBase:
findType = child.iter('type')
store = child.attrib
for types in findType:
store[types.attrib.keys()[0]] = types.attrib.values()[0]
print store
print store.items()[0][1][3]
但是,现在我想从上面的字典中'props'
访问'assetType'
。我尝试使用store.items()[0][1]
并且我能够获得"['props','char','env','sets']"
但是当我store.items()[0][1][3]
时,而不是获得sets
这个词,我得到了r
。我理解它背后的原因,这是因为它将整行记录为字符串而不是字符列表。我也试过像store.get("assetType")
这样的问题。
我的问题是,如何从上面的字典中提取单词props
,char
,env
或sets
而不是单个字母?
由于
答案 0 :(得分:0)
assetType
值是您提到的需要解析为列表的字符串。如评论中所述,有几种方法可以做到这一点。这是一个简单的JSON方式,不幸的是,它非常适合您的情况。单引号不是有效的JSON,因此它们必须换成双打。
>>> import json
>>> store = {'assetType': "['props','char','env','sets']",
'Height': '871', 'Project': 'AnimationProject1',
'Width': '2048', 'FPS': '24', 'Type': 'Animation',
'Unit': 'cm'}
>>> json.loads(store['assetType'].replace("'",'"'))[3]
u'sets'
答案 1 :(得分:0)
如果您可以信任输入,可以对列表的字符串表示执行eval
,将其转换为正确的Python列表
store = {'assetType': "['props','char','env','sets']", 'Height': '871', 'Project': 'AnimationProject1', 'Width': '2048', 'FPS': '24', 'Type': 'Animation', 'Unit': 'cm'}
asset_types = eval(store['assetType'])
# Then access the entries in the list
print asset_types[0] # etc.