【发布时间】:2013-03-02 00:39:18
【问题描述】:
我正在做一个项目,我正在尝试获取 Excel 文件(通过 xlrd 读取)并在其中对地址进行地理编码。为此,我使用了一个目录列表,每个目录条目都是一个单独的站点。
addressList[0] 之类的内容将导致以下结果:
{text:u'First name ': u'John',
text:u'Site City': u'Indio',
text:u'Site State': u'CA',
text:u'Last name': u'Doe',
text:u'Site Phone': u'760-555-1234',
text:u'Site Zip': u'92201',
text:u'Site Address1': u'1313 Mockingbird Lane',
text:u'Site Name': u'Tyrell Industries',
text:u'Hours': u'Mon-Fri 12:00-1:00',
text:u'Affliation': u'Boys & Girls Clubs of America'}
(我刚刚在电子表格中意识到,“affiliation”拼写错误。嗯。)
现在,我环顾四周,知道keys in Python can have spaces in them,这应该不是问题。但是输入 addressList[0]['Site Phone'] 会导致 KeyError。事实上,尝试获取 'Hours' 键的值会导致类似的 KeyError。
基于question on Unicode keys,我尝试了以下方法:
STRING_DATA = dict([(str(k), v) for k, v in addressList[0].items()])
这导致字典中的条目如下:
"text:u'Site Name'": u'Tyrell Industries',
这还不错,只是我现在必须通过STRING_DATA["text:u'Site Name'"] 访问该值,这似乎很痛苦。
有没有更快/更简单的方法来使用这些键?
【问题讨论】:
-
我不明白该数据结构应该是什么。这些“文本”前缀来自哪里?你是如何接收它的,你是如何输出它的?
-
我通过使用
xlrd.workbook_open打开工作簿来获取数据,然后通过创建列表并附加字典来读取数据:addressList.append(dict(zip(column_names, siteSheet.row_values(rownum))))其中column_names是从第一行获得的床单。 ('text:u' 前缀会自动添加。)
标签: python xlrd dictionary python-unicode