python,在 csv 文件中存储和读取不同字典大小的信息
python, Storing and Reading varying dictionary size information in a csv file
我实现了 python 字典,其中包含 SQL 查询和结果。
logtime = time.strftime("%d.%m.%Y)
sqlDict = { 'time':logtime,
'Q1' : 50,
'Q2' : 15,
'Q3' : 20,
'Q4' : 10,
'Q5' : 30,
}
每天,结果都会以字典格式写入 CSV 文件中。注意:Python 词典不排序。因此,当将其他查询(例如 Q7、Q8、Q9...)添加到字典时,每行中的列可能会有所不同。
('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('time', '20.03.2016')
('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')
('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')
在字典中添加了一个新的 SQL 查询,附加信息也保存在同一个 csv 文件中。
所以,例如添加 Q7,字典看起来像
sqlDict = { 'time':logtime,
'Q1' : 50,
'Q2' : 15,
'Q3' : 20,
'Q4' : 10,
'Q5' : 30,
'Q7' : 5,
}
csv 文件看起来像
('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('time', '2016 年 3 月 20 日')
('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')
('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')
('Q1', 50);('Q3', 20);('Q2', 15);('Q5', 30);('Q4', 10);('time', '23.03.2016');('Q7', 5)
我需要绘制 csv 中所有可用的信息,即对于所有 SQL 键,时间与值(数字)图。
csv 文件不包含常规模式。最后,我想绘制一个包含所有可用 Q 及其对应值的图表。如果行中缺少 Q,程序应假定该日期的值为 0。
您只需要处理您的 csv。您知道每一行的最后一个单元格是日期,所以它的格式对我来说很漂亮。
import csv
with open("file.csv","r") as f:
spamreader = csv.reader(f,delimiter=";")
for row in spamreader:
for value in range(len(row)):
query,result = value.strip('(').strip(')').split(",")
if query != "time":
# process it
# query = 'QX'
# result = 'N'
else:
# query = 'time'
# result = 'date'
让您感到困扰的是,您会将所有内容都读取为字符串,因此您将不得不在昏迷处拆分并去掉“(”和“)”
例如:
query,result = row[x].strip('(').strip(')').split(", ")
然后查询 = 'Q2' 和结果 = 15(两者的类型 = 字符串)
我实现了 python 字典,其中包含 SQL 查询和结果。
logtime = time.strftime("%d.%m.%Y)
sqlDict = { 'time':logtime,
'Q1' : 50,
'Q2' : 15,
'Q3' : 20,
'Q4' : 10,
'Q5' : 30,
}
每天,结果都会以字典格式写入 CSV 文件中。注意:Python 词典不排序。因此,当将其他查询(例如 Q7、Q8、Q9...)添加到字典时,每行中的列可能会有所不同。
('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('time', '20.03.2016')
('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')
('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')
在字典中添加了一个新的 SQL 查询,附加信息也保存在同一个 csv 文件中。
所以,例如添加 Q7,字典看起来像
sqlDict = { 'time':logtime,
'Q1' : 50,
'Q2' : 15,
'Q3' : 20,
'Q4' : 10,
'Q5' : 30,
'Q7' : 5,
}
csv 文件看起来像
('Q1', 25);('Q3', 23);('Q2', 15);('Q5', 320);('Q4', 130);('time', '2016 年 3 月 20 日')
('Q1', 35);('Q2', 21);('Q3', 12);('Q5', 30);('Q4', 10);('time', '21.03.2016')
('Q4', 22);('Q3', 27);('Q2', 15);('Q5', 30);('Q1', 10);('time', '22.03.2016')
('Q1', 50);('Q3', 20);('Q2', 15);('Q5', 30);('Q4', 10);('time', '23.03.2016');('Q7', 5)
我需要绘制 csv 中所有可用的信息,即对于所有 SQL 键,时间与值(数字)图。
csv 文件不包含常规模式。最后,我想绘制一个包含所有可用 Q 及其对应值的图表。如果行中缺少 Q,程序应假定该日期的值为 0。
您只需要处理您的 csv。您知道每一行的最后一个单元格是日期,所以它的格式对我来说很漂亮。
import csv
with open("file.csv","r") as f:
spamreader = csv.reader(f,delimiter=";")
for row in spamreader:
for value in range(len(row)):
query,result = value.strip('(').strip(')').split(",")
if query != "time":
# process it
# query = 'QX'
# result = 'N'
else:
# query = 'time'
# result = 'date'
让您感到困扰的是,您会将所有内容都读取为字符串,因此您将不得不在昏迷处拆分并去掉“(”和“)”
例如:
query,result = row[x].strip('(').strip(')').split(", ")
然后查询 = 'Q2' 和结果 = 15(两者的类型 = 字符串)