Я прочитал ответ на этот вопрос и все еще получаю сообщение об ошибке AttributeError: 'dict' object has no attribute 'encode'
.
я пытался
dic = pickle.load(fileObject)
for v in dic:
v.encode('ascii', 'ignore')
а также
dic = pickle.load(fileObject)
for key, val in dic.iteritems():
val.encode('ascii', 'ignore')
и все еще получаю ту же ошибку. При печати переменных все они отображаются с u
впереди. Словарь был замаринован под python 3 и распаковывается в python 2.
Я попробовал pp.pprint((dataFromPrevMod).encode('ascii', 'ignore'))
, и это не сработало.
Если я pprint
из словаря, он показывает его содержимое, но в Python 3 каждая строка начинается с u
, например u'website': u'exmample.org'
Словарь довольно напечатан в Python 3
{
'output': {
'table': 'intersection',
'file_location': '\\\\storage1\\tpn\\tpn_team\\dev\\asmithe\\',
'schema': 'asmithe',
'temporary_location': '\\\\storage1\\tpn\\tpn_team\\dev\\asmithe\
\'
},
'tpn_inventory_db_r': {
'generic_pwd': '51f3tlNE26',
'db_name': 'tpn',
'user': 'asmithe',
'schema': 'asmithe',
'host': 'example.tpns.org'
},
'proj_year': '2005',
'proj_rules_r': 'C:\\asmithe\\rules.txt',
'incidents_db_r': {
'schema': 'tpn_pp_dist',
'generic_pwd': '51f3tlNE26',
'db_name': 'tpn',
'user': 'asmithe',
'fire_table': 'incident',
'host': 'example.tpns.org'
},
'plots_to_project_r': 'C:\\Users\\asmithe\\Plots.txt',
'tpn_proj_db_r': {
'generic_pwd': '51f3tlNE26',
'db_name': 'tpn inventory',
'user': 'asmithe',
'schema': 'test',
'host': 'example.tpns.org'
}
}
Словарь довольно напечатан в Python 2 (обратите внимание на добавление u)
{ u'incidents_db_r': { u'db_name': u'tpn',
u'fire_table': u'incident',
u'generic_pwd': u'51f3tlNE26',
u'host': u'example.tpns.org',
u'schema': u'tpn_pp_dist',
u'user': u'asmithe'},
u'tpn_inventory_db_r': { u'db_name': u'tpn',
u'generic_pwd': u'51f3tlNE26',
u'host': u'example.tpns.org',
u'schema': u'asmithe',
u'user': u'asmithe'},
u'tpn_proj_db_r': { u'db_name': u'tpn inventory',
u'generic_pwd': u'51f3tlNE26',
u'host': u'example.tpns.org',
u'schema': u'test',
u'user': u'asmithe'},
u'output': { u'file_location': u'\\\\storage1\\tpn\\tpn_team\\dev\\asmithe\ \',
u'schema': u'asmithe',
u'table': u'intersection',
u'temporary_location': u'\\\\storage1\\tpn\\tpn_team\\dev\\asmithe idek\\'},
u'plots_to_project_r': u'C:\\Users\\asmithe\\Plots.txt',
u'proj_rules_r': u'C:\\asmithe\\rules.txt',
u'proj_year': u'2005'}
v
может быть не лучшим именем переменной. Что такоеtype(key)
иtype(val)
? В настоящее время похоже, что там есть вложенный словарь. - person dhke   schedule 20.08.2015print(val)
? - person Anand S Kumar   schedule 20.08.2015data
не то, что вы думаете... Сделайте хорошийimport pprint
pprint.pprint(data)
- person Maresh   schedule 20.08.2015val.encode(whatever)
создает и возвращает вам новую строку, оставляя оригинал без изменений. В этом коде вы игнорируете это новое строковое значение, которое, вероятно, вам не нужно. - person bgporter   schedule 20.08.2015data
, потому что из сообщения об ошибке, о которой вы сообщаете, похоже, что это на самом деле вложенные словари. - person Maresh   schedule 20.08.2015pprint
илиprint
илиtype
:) См. мой предыдущий комментарий. - person Maresh   schedule 20.08.2015u''
? Они, безусловно, появляются вrepr(u'äöü')
, ноprint(u'äöü')
должен правильно декодировать юникод в правильную кодировку терминалов. - person dhke   schedule 20.08.2015u
, поэтому OP хочет сделать их не Unicode. - person TigerhawkT3   schedule 20.08.2015pprint(data)
? Из вашего сообщения об ошибкеdata
звучит так:{ 'one': {...} }
значит, вы пытаетесь вызвать.encode
в словаре, а не в строке, это то, что мы хотим проверить. - person Maresh   schedule 20.08.2015isinstance
иself
- person Celeritas   schedule 22.08.2015