如何使用Python将文本转换为Json格式
我使用python Selenium从下面的站点提取了数据 请查看表“设计和/或目标的指标比较”。 我已将表格提取为文本格式。 下面是文本的示例输出如何使用Python将文本转换为Json格式,python,json,Python,Json,我使用python Selenium从下面的站点提取了数据 请查看表“设计和/或目标的指标比较”。 我已将表格提取为文本格式。 下面是文本的示例输出 Metric Design Project Design Target Median Property* ENERGY STAR score (1-100) Not Available 75 50 Source EUI (kBtu/ft²) 3.1 Not Available 127.9 Site EUI (kBtu/ft²) 1.0 Not A
Metric Design Project Design Target Median Property*
ENERGY STAR score (1-100) Not Available 75 50
Source EUI (kBtu/ft²) 3.1 Not Available 127.9
Site EUI (kBtu/ft²) 1.0 Not Available 40.7
Source Energy Use (kBtu) 314.0 Not Available 12,793.0
Site Energy Use (kBtu) 100.0 Not Available 4,074.2
Energy Cost ($) 2,000.00 Not Available 81,484.00
Total GHG Emissions (Metric Tons CO2e) 0.0 Not Available 0.5
我试图将文本转换为json
import csv
import json
with open('file.txt', 'rb') as csvfile:
filereader = csv.reader(csvfile, delimiter=' ')
i = 0
header = []
out_data = []
for row in filereader:
row = [elem for elem in row if elem]
if i == 0:
i += 1
header = row
else:
row[0:4] = [row[0]+" "+row[1]+" "+row[2]+" "+row[3]]
_dict = {}
for elem, header_elem in zip(row, header):
_dict[header_elem] = elem
out_data.append(_dict)
print json.dumps(out_data)
我得到的JSON格式输出如下
[{"Project": "75", "Metric": "ENERGY STAR score (1-100)", "Design": "50"}]
JSON格式输出的格式应为
[{"Design Project": "Not Available", "Design Target": "75", "Metric": "ENERGY STAR score (1-100)", "Median Property*": "50"}]
您忘记了为其他json键(如Design)创建数据和头
项目、设计目标等)
这是正确的版本:
import csv
import json
with open('test.txt', 'r') as csvfile: # Opens file
filereader = csv.reader(csvfile, delimiter=' ')
i = 0
header = []
out_data = []
for row in filereader:
row = [elem for elem in row if elem]
if i == 0:
i += 2
row[1:3] = [row[1]+" "+row[2]] # Design Project key
row[2:4] = [row[2]+" "+row[3]] # Design Target key
row[3:5] = [row[3]+" "+row[4]] # Median Property*
header = row
else:
row[0:4] = [row[0]+" "+row[1]+" "+row[2]+" "+row[3]] # Metric value
if len(row) == 5: # check conditions for better parse
row[1:3] = [row[1]+" "+row[2]] # Design Project value
_dict = {}
for elem, header_elem in zip(row, header):
_dict[header_elem] = elem
out_data.append(_dict)
print json.dumps(out_data)
只有当数据的结构是恒定的,并且关键字/值由相同数量的单词组成时,它才起作用
您可以添加其他条件(如第21行中的我):
我猜您在蓝图中缺少了一些可以比较和填充的值in@bhansa我直接从站点中存在的表中提取数据。如果使用CSV而不是空格分隔的值,则会更容易。请展示生成该文件的代码,您能否以genric的方式帮助将其作为JSON用于上述文本的整个输出?
if len(row) == 5: # check conditions for better parse
row[1:3] = [row[1]+" "+row[2]] # Design Project value