使用python“'str'对象没有属性'get'”来解析文件

时间:2019-09-17 03:04:37

标签: python arrays

我是一个相当新的开发人员,正在尝试从该文件中解析“ id”值。遇到以下问题。

我的python代码:

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))

这将返回错误:ValueError:格式错误的节点或字符串:<_ast.Name对象,位于0x0000023D8DA4D2E8>,其id为ast.literal_eval(contents)

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

{"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,文件类型为“文件”,我只用记事本查看其内容。

1 个答案:

答案 0 :(得分:0)

在我看来,您有一个文件,其字符串表示为dict(词典)。因此,您需要做的是:

  

string_of_dict ast.literal_eval() dict

  1. 打开文件,然后将文本读入字符串变量。目前,我认为该字符串将进入ids
  2. 然后使用dict库将dict的字符串表示形式转换为ast,如下所示。 Reference
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)