CSV前言
CSV(Comma-Separated Values,中文逗号分隔值或字符分隔值)是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用,也应用于程序之间转移表格数据。
CSV并不是一种单一的、定义明确的格式,泛指具有以下特征的任何文件: 纯文本,使用某个字符集,如ASCII、Unicode、EBCDIC或GB2312。 由记录组成(典型的是每行一条记录)。 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格)。 每条记录都有同样的字段序列。
数据格式
1 王语嫣 16 琅嬛福地,神仙姐姐 2 小龙女 17 终南山下,活死人墓,神雕侠侣,绝世江湖 3 赵灵儿 15 灵蛇岛,逍遥哥哥的小太妹
读取操作: (编码格式,通常使用utf-8,如果文件编码不符会报错)
import csv # 文件获取 file = open('test.csv', 'r', encoding="utf-8") # 内容读取 list1 = csv.reader(file) # 信息遍历 for line in list1: for item in line: print(item, end=" ") print()
写入操作:
import csv # 文件获取 file = open('test.csv', 'w+', encoding="utf-8") # 写入操作 writer = csv.writer(file) # 按照行写入 writer.writerow(['1', '王语嫣', '16', "琅嬛福地,神仙姐姐"]) data = [('2','小龙女', '17', '终南山下,活死人墓,神雕侠侣,绝世江湖'), ('3','赵灵儿', '15', '灵蛇岛,逍遥哥哥的小太妹')] # 写入多行记录 writer.writerows(data) # 刷新文件 file.flush() # 关闭文件流 file.close()
EXCEL前言
Python读写Excel文档需要安装和使用xlrd模块,Excel文件写入需要使用xlwt模块。
写入XLS
这里用到的包是:【import xlwt】
需要进行下载:【pip install xlwt】
import xlwt # 创建内容的样式对象,包括字体样式以及数字的格式 wb = xlwt.Workbook() ws = wb.add_sheet('Sheet1') # 添加一个sheet # 需要将中文通过u""的形式转换为unicode编码 data = [[u"编号", u"姓名", u"年龄", u"简介"], [1, u"王语嫣", 16, u"琅嬛福地,神仙姐姐"], [2, u"小龙女", 17, u"活死人墓,冰山美人"], [3, u"赵灵儿", 31, u"灵蛇岛上,戚戚艾艾"] ] for i in range(0, data.__len__()): # 循环遍历每一行 for j in range(0, data[i].__len__()): # 循环遍历第i行的每一列 ws.write(i, j, data[i][j]) wb.save("test.xls")
能确定生成了【test.xls】文件,这里别写【xlsx】,因为【xlwt】不支持【xlsx】操作。
读取XLS
这里用到的包是:【import xlrd】
需要进行下载:【pip install xlrd】
测试表格(刚刚通过【xlwt】生成):
import xlrd workbook = xlrd.open_workbook('test.xls') # 打开Excel文件读取数据 print(workbook.sheet_names()) # 获取所有sheet # sheet2 = workbook.sheet_names()[0] #第一种方式,根据下标获取 sheet = workbook.sheet_by_index(0) # 第二种方式,根据sheet索引获取sheet对象,索引从0开始 sheet = workbook.sheet_by_name('Sheet1') # 第三种方式,根据sheet名称获取sheet对象 print(sheet.name, sheet.nrows, sheet.ncols) # sheet的名称、行数和列数 # 获取整行和整列的值(数组) rows = sheet.row_values(2) # 获取第三行内容 cols = sheet.col_values(2) # 获取第三列内容 print(str(rows), '\n', cols) # 获取单元格内容 print(sheet.cell(1, 0).value, end=" ") print(sheet.cell_value(1, 0), end=" ") print(sheet.row(1)[0].value, end=" ") print(sheet.cell(1, 0).ctype) # 获取单元格内容的数据类型 print("\n--------------------------------------\n") # 遍历 for row in sheet: print(row[0], row[1], row[2], row[3])