python文件写入字典格式输出_如何使用python读取word的表格并输出为字典?/python字典数据生成excel表格...

如何用python从excel中同时提取两个列的数据,并生成dict(用xlrd)

import xlrd

data = xlrd.open_workbook('excelFile.xls')

table = data.sheet_by_index(0) #通序获取工作

colnumber_b = ord('B')-ord('A')

colnumber_g = ord('G')-ord('A')

score_dict = {}

for i in range(100): #前一百

score_dict[table.cell(i,colnumber_b).value]=table.cell(i,colnumber_g).value

求助用python从数据库取数据动态生成表格的方法

一、可使用三方库

python中处理excel表格,常用的库有xlrd(读excel)表、xlwtexcel)表、openpyxl(可读写excel表)等。xlrd读数大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库。介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现有excel表格内容的功能。一般只能将原excel中的内容读出、做完处理后,再写入一个新的excel文件。

二、常见问题

使用python处理excel表格时,发现两个个比较难缠的问题:unicode编码和excel中记录的时间。

因为python的默认字符编码都为unicode,所以打印从excel中读出的中文或读取中文名的excel表或sheet时,程序提示错误UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。这是由于在windows中,中文使用了gb2312编码方式,python将其当作unicode和ascii来解码都不正确才报出的错误。使用VAR.encode('gb2312')即可解决打印中文的问题。(很奇怪,有的时候虽然能打印出结果,但显示的不是中文,而是一堆编码。)若要从中文文件名的excel表中读取数据,可在文件名前加‘u’表示将该中文文件名采用unicode编码。

有excel中,时间和日期都使用浮点数表示。可看到,当‘2013年3月20日’所在单元格使用‘常规’格式表示后,内容变为‘41353’;当其单元格格式改变为日期后,内容又变为了‘2013年3月20日’。而使用xlrd读出excel中的日期和时间后,得到是的一个浮点数。所以当向excel中写入的日期和时间为一个浮点数也不要紧,只需将表格的表示方式改为日期和时间,即可得到正常的表示方式。excel中,用浮点数1表示1899年12月31日。

三、常用函数

以下主要介绍xlrd、xlwt、datetime中与日期相关的函数。

import xlrd

import xlwt

from datetime

def testXlrd(filename):

book=xlrd.open_workbook(filename)

sh=book.sheet_by_index(0)

print "Worksheet name(s): ",book.sheet_names()[0]

print 'book.nsheets',book.nsheets

print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols

print 'A1:',sh.cell_value(rowx=0,colx=1)

#如果A3的内容为中文

print 'A2:',sh.cell_value(0,2).encode('gb2312')

def testXlwt(filename):

book=xlwt.Workbook()

sheet1=book.add_sheet('hello')

book.add_sheet('word')

sheet1.write(0,0,'hello')

sheet1.write(0,1,'world')

row1 = sheet1.row(1)

row1.write(0,'A2')

row1.write(1,'B2')

sheet1.col(0).width = 10000

sheet2 = book.get_sheet(1)

sheet2.row(0).write(0,'Sheet 2 A1')

sheet2.row(0).write(1,'Sheet 2 B1')

sheet2.flush_row_data()

sheet2.write(1,0,'Sheet 2 A3')

sheet2.col(0).width = 5000

sheet2.col(0).hidden = True

book.save(filename)

if __name__=='__main__':

testXlrd(u'你好。xls')

testXlwt('helloWord.xls')

base=datetime.date(1899,12,31).toordinal()

tmp=datetime.date(2013,07,16).toordinal()

print datetime.date.fromordinal(tmp base-1).weekday()

怎么用python实现字典存储为excel表格

这典不好看啊!

直接读取value写入csv,

import csv

f = open('file.csv','a',newline='')

w = writer(f)

w.writerow(dict(key))

打开csv文件另存为excel.

如果是很多个字成的列表,形式像[{a:1,b:2,c:3},……{a:4,b:5,c:6}],就可以用pandas来进行处理,存储为excel, 表头为a,b,c

dict_l = [{a:1,b:2,c:3},……{a:4,b:5,c:6}]

from pandas import DataFrame as DF

df = DF(dict_l)

df.to_csv(filename)

python中用openpyxl读取excel表格数据,并且转换成字典格式

'''

如题。excel里面有班级,姓名,性别,学号的数据。如何部读取出来,

并且每一行数据都显示为一个字典?

比如这样展示:班级:一(1)班,姓名:小明,性别:男,学号:110

'''

'''

思路:

先将表头每格数据读取出来,放在列表中:[‘班级’,‘姓名’,‘性别’,‘学号’]

再将表头下面每行也读取出来,放在列表中:['一(1)班','小明‘,’男','110’]

关键就算要用zip函数,首先了解zip的作用

是将2个列表中的数据第一个和第一个组合成元组,第二个和第二个组合成元组,以此类推

但它是存放在内存中,要将他们变成列表用到list()函数,最后列表要变成字典用到dict{}函数

'''

import openpyxl

# 读取excel中的数据

# 第一步打开工作簿

wb = openpyxl.load_workbook('cases.xlsx')

# 第二步选取表单,注意Sheet是大写的S

sheet = wb['Sheet1']

# 按行获取数据转换成列表

# 先定义一个总的列表所有的行先放在列表中

rows_data = list(sheet.rows)

# 获取表单的表头信息(第一行),也就是列表的第一个元素

titles = []

for title in rows_data[0]:

titles.append(title.value)

# print(title.value) # 打出来看看

# 遍历出除了第一行的其他行

for a_row in rows_data[1:]:

# the_row_data用来临时存放每一行数据

a_row_data = []

# 遍历每一行的单元格

for cell in a_row:

# print(cell.value) # 取单元格的值

# 判断该单元格的值是否为字符串类型,

# 因为有些是空的,

# 是字符串就转换成python表达式,空的就不是字符串类型就直接添加

if isinstance(cell.value, str):

a_row_data.append(eval(cell.value))

else:

a_row_data.append(cell.value)

# print(data) #打印出来看看

# 将表头和该条数据内容,打包成一个字典

rows_dict = dict(list(zip(titles, a_row_data)))

# all_rows.append(rows_dict)

print(rows_dict)

如何使用python读取word的表格并输出为字典?

直接读取valuecsv文件,

import csv

f = open('file.csv','a',newline='')

w = writer(f)

w.writerow(dict(key))

打开csv文件另存为excel.

如果是很多典组成的列表,形式像[{a:1,b:2,c:3},……{a:4,b:5,c:6}],就可以用pandas来进行处理,存储为excel, 表头为a,b,c

dict_l = [{a:1,b:2,c:3},……{a:4,b:5,c:6}]

from pandas import DataFrame as DF

df = DF(dict_l)

df.to_csv(filename)

如何用python将数据写入excel表格

http://www.jb51.net/article/42635.htm

Python使用xlrd模块先读取Excel数据(如学生各科成绩表)并储存于字典中

import xlrd

data = xlrd.open_workbook('E:\\表.xls')

table = data.sheets()[0]

l = []

for i in range(table.nrows):

l.append(table.row_values(i))

这样sheet1的内容就都为l的list

Python处理excel里的字典

#不知道你说的字典合并是怎样的,面我是以“分类编号”作为key,如果key就把”字典数据“添加到一个key下value裏面

import xlrd

data = xlrd.open_workbook('book1.xls')

table = data.sheets()[0]

nrows = table.nrows

ncols = table.ncols

result = {}

for r in range(1,nrows):

key = table.cell(r,1).value

content = table.cell(r,0).value

if result.has_key(key):

result[key].append(content)

else:

result[key] = [content]

print result

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值