使用 Python "'str' object has no attribute 'get'"解析文件



我是一个相当新的开发人员,并试图从这个文件中解析"id"值。遇到下面的问题。

我的蟒蛇代码:

import ast
from pathlib import Path
file = Path.home() /'AppData'/'Roaming'/'user-preferences-prod'
with open(file, 'r') as f:
contents = f.read()
ids = ast.literal_eval(contents)
profileids = []
for data in ids:
test= data.get('id')
profileids.append(test)
print(profileids))

这将返回错误:值错误:格式错误的节点或字符串:<_ast。在 id 处0x0000023D8DA4D2E8>处命名对象 = ast.literal_eval(内容(

我感兴趣的文件中的内容片段:

{"settings":{"defaults":{"value1":,"value2":,"value3":null,"value4":null,"proxyid":null,"sites":{},"sizes":[],"value5":false},"value6":true,"value11":,"user":{"value9":"","value8": ,"value7":"","value10":""},"webhook":"},'profiles':[{'billing': {'address1': '', 'address2': '', 'city': '', 'country': 'United States', 'firstName': '', 'lastName': '', 'phone': '', 'postalCode': '', 'province': '', 'usesBillingInformation': False}, 'createdAt': 123231231213212, 'id': '23123123123213, 'name': ''

我需要循环这段代码,因为我对有多个 id 值感兴趣,并且需要将它们全部输入到列表中。希望我解释了这一切。根据Windows,文件类型为"文件",我只是使用记事本查看其内容。

在我看来,您有一个文件,其中包含dict(字典(的字符串表示形式。因此,您需要做的是:

string_of_dictast.literal_eval()dict

  1. 打开文件并将文本读入字符串变量。目前我认为这个字符串正在进入ids.
  2. 然后使用库将dict的字符串表示形式转换为astdict,如下所示。参考
import ast
string_of_dict = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
ast.literal_eval(string_of_dict)

输出

{'muffin': 'lolz', 'foo': 'kitty'}

溶液

这样的事情很可能有效。您可能需要对其进行一些调整。

import ast
with open(file, 'r') as f:
contents = f.read()
ids = ast.literal_eval(contents)
profileids = []
for data in ids:
test= data.get('id')
profileids.append(test)
print(profileids)

最新更新