在python2.7中访问带空格的unicoded密钥

2024-05-19 09:33:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,在这个项目中我试图获取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'}

(我刚刚意识到在电子表格中,“隶属关系”的拼写有误。嗯。)

现在,我看了看keys in Python can have spaces in them,我知道这不应该是个问题。但是输入addressList[0]['Site Phone']会导致一个键错误。事实上,尝试获取'Hours'键的值会导致类似的KeyError。在

基于question on Unicode keys,我尝试了以下方法:

^{pr2}$

这就产生了一个字典,其中的词条如下:

"text:u'Site Name'": u'Tyrell Industries',

这是合理的,除了我现在必须通过STRING_DATA["text:u'Site Name'"]来访问值,这看起来很痛苦。在

有没有更快/更容易使用钥匙的方法?在


Tags: 项目方法textnamein目录sitephone
2条回答

要获得列标题,您需要做的就是:

column_names = site_sheet.row_values(rowx=0, end_colx=NUMBER_OF_COLUMNS)

然而,标题似乎需要稍加修改,例如,u'First name '和{}可以通过删除前导和尾随空格并强制标题大小写来与其他标题保持一致:

^{pr2}$

text:u'First name ': u'John',不是有效的dict项。在

在像text:u'First Name'这样的键之前有text:前缀的原因是,因为您将xlrd cell用作dict的键。在

您应该使用cell.value显式地从单元格中提取值

比如:

new_keys = [k.value for k in addresslist[0]]

相关问题 更多 >

    热门问题