问题描述
**如果您尝试运行代码,请将Tall设置为字符串,谢谢。
我是从POST网站上抓取的,Tall看起来像一个列表,但不是。 这是一个“字符串”,我已经使用了一些分割使其整洁。 我只想知道是否有一种方法可以将其作为列表并使用简单的方法来提取数据。 否则对我来说很难将它们全部拆分。
Tall的类型是字符串,我想从Tall中提取值:
Tall=[{"SALEDATE":"2018/02/06","CARID":"2002","CERTPHOTO1":"Y"},
{"SALEDATE":"2018/02/06","CARID":"4791","CERTPHOTO1":""}]
码:
print(type(Tall))
'str'类
print(Tall[1])
{
但是当我尝试这样做时:
for i in range(2):
result=list(Tall[i].values())
错误提示:
AttributeError: 'str' object has no attribute 'values'
我想将Tall从字符串更改为列表,而不更改Tall的任何内容,这可能吗?
我预期的结果:
2018/02/06,2002,Y
2018/02/06,4791,
1楼
我想你的身高是这样的。 (将单引号添加为字符串)。 您的问题(如何将字符串转换为列表)的答案是通过eval 。
>>> tall_str = '[{"SALEDATE":"2018/02/06","CARID":"2002","CERTPHOTO1":"Y"},{"SALEDATE":"2018/02/06","CARID":"4791","CERTPHOTO1":""}]'
>>> print(type(tall_str))
<class 'str'>
(1)json.loads
>>> import json
>>> tall_list = json.loads(tall_str)
>>> print(type(tall_list))
<class 'list'>
(2)评估
>>> tall_list = eval(tall_str)
>>> print(type(tall_list))
<class 'list'>
2楼
您可以使用json.loads()
:
>>> import json
>>> tall = json.loads('[{"SALEDATE":"2018/02/06", "CARID":"2002","CERTPHOTO1":"Y"},{"SALEDATE":"2018/02/06","CARID":"4791","CERTPHOTO1":""}]')
>>> tall
[{'SALEDATE': '2018/02/06', 'CARID': '2002', 'CERTPHOTO1': 'Y'}, {'SALEDATE': '2018/02/06', 'CARID': '4791', 'CERTPHOTO1': ''}]
>>> tall[0]
{'SALEDATE': '2018/02/06', 'CARID': '2002', 'CERTPHOTO1': 'Y'}
>>> tall[0].values()
dict_values(['2018/02/06', '2002', 'Y'])
3楼
使用__getitem__
特殊方法是获得所需结果的最简单方法。
这是我解决您问题的方法:
Tall=[{"SALEDATE":"2018/02/06","CARID":"2002","CERTPHOTO1":"Y"}, {"SALEDATE":"2018/02/06","CARID":"4791","CERTPHOTO1":""}]
for i in Tall:
sale = i.__getitem__('SALEDATE')
carid = i.__getitem__('CARID')
photo = i.__getitem__('CERTPHOTO1')
print(sale,',',carid,',',photo)
执行上述代码后,我们将获得您要求的确切结果:
2018/02/06, 2002, Y
2018/02/06, 4791,