如何用python把excel存成dictionary结构?

Perla666 2020-02-05 04:29:10
求求各位大神告诉小白,是如何按照时间排序,并且要求一行一行读取出来存成字典的数据结构。键为时间,剩下的随便。
...全文
422 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
paullbm 2020-02-14
  • 打赏
  • 举报
回复
引用 7 楼 m0_46149337的回复:
[quote=引用 6 楼 paullbm 的回复:][quote=引用 5 楼 m0_46149337 的回复:]
太感谢了,很详细,我还想问问,如果我要是按时间每隔五分钟提取一行数,应该怎么操作?


那就导入time模块
import time

然后在需要时间间隔的地方调用
time.sleep(5*60)[/quote]那接下来的循环要怎么做呢?我想按这个表格,每五分钟循环一次数据[/quote] 你在5楼说要每5分钟提取一行数据,在7楼又说每5分钟循环一次数据? 把你的目的说详细一点,尽量别有歧义。
Perla666 2020-02-14
  • 打赏
  • 举报
回复
引用 6 楼 paullbm 的回复:
[quote=引用 5 楼 m0_46149337 的回复:]
太感谢了,很详细,我还想问问,如果我要是按时间每隔五分钟提取一行数,应该怎么操作?


那就导入time模块
import time

然后在需要时间间隔的地方调用
time.sleep(5*60)[/quote]那接下来的循环要怎么做呢?我想按这个表格,每五分钟循环一次数据
paullbm 2020-02-14
  • 打赏
  • 举报
回复
引用 5 楼 m0_46149337 的回复:
太感谢了,很详细,我还想问问,如果我要是按时间每隔五分钟提取一行数,应该怎么操作?


那就导入time模块
import time

然后在需要时间间隔的地方调用
time.sleep(5*60)
Perla666 2020-02-13
  • 打赏
  • 举报
回复
引用 4 楼 paullbm 的回复:
稍微小小改动了些,以这个为准:

'''
【特别说明】:
如果没有xlrd模块,需要事先在命令行安装xlrd模块
方法:在cmd命令行输入:pip install xlrd
'''

import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime

def read_xls(filename):
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0) # sheet索引从0开始
xls_list = []
for row_index in range(1, sheet.nrows): # 不读取表头
rows = sheet.row_values(row_index) # 所以从第2行内容开始获取
xls_list.append(rows)
return xls_list

def create_my_dict(table_list):
records_dict = {}
for row_data in table_list:
# 格式转换:将第0列的值转换成datetime对象
col0 = datetime(*xldate_as_tuple(row_data[0], 0))
key = col0.strftime('%Y-%m-%d %H:%M') #取第0列
value = row_data[1:] #取第1列-第n列
records_dict.update({key:value}) #加入到字典变量中

return records_dict


def dict_sort(records_dict, sort_reverse=False):
'''
:param records_dict:
:param sort_reverse: 默认参数(默认值为False)
:return:
'''
# 将字典转换为列表
kvlist = list(records_dict.items())
# 排序
kvlist.sort(reverse=sort_reverse)

# 将列表转换为新字典并返回
return dict(kvlist)

# main 执行体
if __name__ == '__main__':
# xls文件路径根据自己的来设置
filename = 'C:\\Users\\Administrator\\Desktop\\Book1.xls'

xls_list = read_xls(filename)
records_dict = create_my_dict(xls_list)
print("排序前的字典数据是:\n{}".format(records_dict))

new_dict = dict_sort(records_dict)
# new_dict = dict_sort(records_dict, True) # 如此调用则为倒序
print("\n排序后的字典数据是:\n{}".format(new_dict))


太感谢了,很详细,我还想问问,如果我要是按时间每隔五分钟提取一行数,应该怎么操作?
paullbm 2020-02-07
  • 打赏
  • 举报
回复
为了方便更好的测试,楼主把.xls文件也发送过来吧~
124020745@qq.com
paullbm 2020-02-07
  • 打赏
  • 举报
回复
稍微小小改动了些,以这个为准:

'''
【特别说明】:
如果没有xlrd模块,需要事先在命令行安装xlrd模块
方法:在cmd命令行输入:pip install xlrd
'''

import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime

def read_xls(filename):
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0) # sheet索引从0开始
xls_list = []
for row_index in range(1, sheet.nrows): # 不读取表头
rows = sheet.row_values(row_index) # 所以从第2行内容开始获取
xls_list.append(rows)
return xls_list

def create_my_dict(table_list):
records_dict = {}
for row_data in table_list:
# 格式转换:将第0列的值转换成datetime对象
col0 = datetime(*xldate_as_tuple(row_data[0], 0))
key = col0.strftime('%Y-%m-%d %H:%M') #取第0列
value = row_data[1:] #取第1列-第n列
records_dict.update({key:value}) #加入到字典变量中

return records_dict


def dict_sort(records_dict, sort_reverse=False):
'''
:param records_dict:
:param sort_reverse: 默认参数(默认值为False)
:return:
'''
# 将字典转换为列表
kvlist = list(records_dict.items())
# 排序
kvlist.sort(reverse=sort_reverse)

# 将列表转换为新字典并返回
return dict(kvlist)

# main 执行体
if __name__ == '__main__':
# xls文件路径根据自己的来设置
filename = 'C:\\Users\\Administrator\\Desktop\\Book1.xls'

xls_list = read_xls(filename)
records_dict = create_my_dict(xls_list)
print("排序前的字典数据是:\n{}".format(records_dict))

new_dict = dict_sort(records_dict)
# new_dict = dict_sort(records_dict, True) # 如此调用则为倒序
print("\n排序后的字典数据是:\n{}".format(new_dict))


paullbm 2020-02-07
  • 打赏
  • 举报
回复

'''
【特别说明】:
如果没有xlrd模块,需要事先在命令行安装xlrd模块
方法:在cmd命令行输入:pip install xlrd
'''

import xlrd
from xlrd import xldate_as_tuple
from datetime import datetime


def read_xls(filename):
workbook = xlrd.open_workbook(filename)
sheet = workbook.sheet_by_index(0) # sheet索引从0开始
list = []
for row_index in range(1, sheet.nrows): #sheet.nrows
rows = sheet.row_values(row_index) # 获取第2行内容
list.append(rows)
return list

def create_my_dict(table_list):
records_dict = {}
for row_data in table_list:
# 格式转换:将第0列的值转换成datetime对象
col0 = datetime(*xldate_as_tuple(row_data[0], 0))
key = col0.strftime('%Y-%m-%d %H:%M') #取第0列
value = row_data[1:] #取第1列-第n列
records_dict.update({key:value}) #加入到字典变量中

return records_dict


def dict_sort(records_dict):

# 将字典转换为列表
kvlist = list(records_dict.items())
# 排序
kvlist.sort()

# 将列表转换为新字典并返回
return dict(kvlist)

# main 执行体
if __name__ == '__main__':
# xls文件路径根据自己的来设置
filename = 'E:\\Users\\Administrator\\Desktop\\csdn.xls'

xls_list = read_xls(filename)
records_dict = create_my_dict(xls_list)
print("排序前的字典数据是:\n{}".format(records_dict))

new_dict = dict_sort(records_dict)
print("\n排序后的字典数据是:\n{}".format(new_dict))

yyang0514 2020-02-05
  • 打赏
  • 举报
回复
1.将字典转化为列表 mylist=list(mydict) 2. 列表排排序 key_list=mylist.sort() 3. 在字典中查找对应的值 mydict[key_list[i]]

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧