1

私は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'}

(そして、スプレッドシートで「所属」のつづりが間違っていることに気づきました。まあ。)

さて、Pythonのキーにはスペースが含まれている可能性があり、これは問題にならないはずです。ただし、入力addressList[0]['Site Phone']するとKeyErrorが発生します。実際、「時間」キーの値を取得しようとすると、同様のKeyErrorが発生します。

Unicodeキーに関する質問に基づいて、私は次のことを試しました。

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'"]。これは苦痛のようです。

キーを使用するためのより迅速で簡単な方法はありますか?

4

2 に答える 2

2

text:u'First name ': u'John',は有効なdictエントリではありません。

text:のようなキーの前にプレフィックスがある理由は、 dictのキーとしてsをtext:u'First Name'使用しているためです。xlrd cell

を使用してセルから値を明示的に抽出する必要がありますcell.value

何かのようなもの:

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

于 2013-03-13T20:54:53.380 に答える
1

列見出しを取得するために必要なのはこれだけです。

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

ただし、見出しには少しスクラブが必要であり、先頭と末尾のスペースを削除してタイトルケースを適用することで、他の見出しu'First name 'u'Last name'一致させることができるようです。

column_names = [x.strip().title()
    for x in site_sheet.row_values(row=0, end_colx=NUMBER_OF_COLUMNS)]
于 2013-03-14T10:39:07.283 に答える