python (数据处理csv,excel)

处理scv文件

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
如一下格式:
27,20,14,15,14,12,94,64,37,1015,1013,1009,7,5,2,,,152
.csv文件可以直接用excel或者类似软件打开,样子都是我们常见的表格形式

import csv

fileName = '1.csv'
with open(fileName,'r',encoding='utf-8') as f:
    text = csv.reader(f)
    for i in text:            #按行读取
        print(i)

print("##"*10)

with open(fileName,"r",encoding="utf-8")as f:
    for i in f.readlines():  #每一行就是一个字符串 包含换行符
        print(i.split(","))

运行结果:

['1', '2', '3', '4', '5', '6']
['a', 'b', 'c', 'd', 'e', 'f']
####################
['1', '2', '3', '4', '5', '6\n']
['a', 'b', 'c', 'd', 'e', 'f']

处理excel文件

python提供有第三方库来支持对excel的操作,python处理excel文件用的第三方模块库有xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块。下面我们先安装第三方库
Pip install xlrd
Pip install xlwt
Pip install xlutils
Pip install pyExcelerator
Xlrd只能进行读取excel文件,没法进行写入文件,
xlwt可以新增文件,但是不能在已有的excel的文件上进行修改,如果有这个需求,就需要使用xluntils模块了,
pyExcelerator模块与xlwt类似,也可以用来生成excel文件

xlrd模块读取文件


import xlrd

#打开文件
data = xlrd.open_workbook('test.xlsx')
#打开第一张表
table = data.sheets()[0]
#获取表的行数
nrows=table.nrows
print(nrows)
#循环逐行打印
for i in range(nrows):
    # 通过row_values来获取每行的值
    print(table.row_values(i))

一个复制点的例子


# 一个复制点的例子
import xlrd

#打开文件
workbook = xlrd.open_workbook('test.xlsx')
#抓取所有的sheet页的名称
worksheets = workbook.sheet_names()
# print(worksheets)

#定位到sheet1
# worksheet1 = workbook.sheet_by_name(u'Sheet1')
# print(worksheet1.nrows)

#遍历所有sheet对象
for worksheet_name in worksheets:
    worksheet = workbook.sheet_by_name(worksheet_name)
    #获取所有的行数
    num_rows = worksheet.nrows
    for curr_row in range(num_rows):
        #获取当前行的数据
        row = worksheet.row_values(curr_row)
        print('当前表格{0}第{1}行数据是{2}'.format(worksheet_name,curr_row,row))

    #遍历所有的列
    #获取所有的列数
    num_cols = worksheet.ncols
    for curr_col in range(num_cols):
        #获取当前列的数据
        col = worksheet.col_values(curr_col)
        print('当前表格{0}第{1}列数据是{2}'.format(worksheet_name,curr_col,col))
       

xlwt模块生成excel

#####写入excel文件(创建形式)######
#xlwt 模块不能在已存在的excel文件上修改

import xlwt

#创建workbook 和sheet对象
workbook = xlwt.Workbook() #注意Workbook的开头是大写
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2=workbook.add_sheet('sheet2',cell_overwrite_ok=True)
sheet3=workbook.add_sheet('sheet3',cell_overwrite_ok=True)
#向sheet页中写入数据
sheet1.write(0,0,'aaaaaaaa')
sheet1.write(0,1,'bbbbbbbbb')
sheet2.write(0,0,'222222')
sheet2.write(0,1,'33333')
#-----------使用样式-----------------------------------
#初始化样式
style = xlwt.XFStyle()
#为样式创建字体
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#设置样式的字体
style.font = font
#使用样式
sheet3.write(0,1,'some bold Times text',style)

#保存该excel文件,有同名文件时覆盖
workbook.save('test3.xls')
print('创建excel文件完成')

生成超链接

#生成超链接
import codecs
import xlwt
book = xlwt.Workbook()
sheet_index = book.add_sheet('index')
line=0
for i in range(9):
    link = 'HYPERLINK("{0}.txt", "{1}_11111")'.format(i, i)  #生成链接 第一个参数是链接指向,第二个参数是excel文件显示的名称
    sheet_index.write(line, 0, xlwt.Formula(link))    #  xlwt.Formula(link) 生成链接
    line += 1
book.save('simple2.xls')   #生成excel文件

for i in range(0, 9):      #生成对应的链接文件
    file = str(i) + ".txt"
    with codecs.open(file, 'w') as f:
        f.write(str(i)*10)

xlutils 模块

Python进行修改excel文件:
但是不支持使用xlsx文件,直接使用xlsx就没有问题,如果使用xlsx文件,容易发生问题。

import xlrd
import xlutils.copy
#打开一个workbook
rb = xlrd.open_workbook('aaa111.xls')
wb = xlutils.copy.copy(rb)
#获取sheet对象,通过sheet_by_index()获取的sheet对象没有write()方法
ws = wb.get_sheet(0)
#写入数据
ws.write(10, 10, 'changed!')
#添加sheet页
wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)
#利用保存时同名覆盖达到修改excel文件的目的,注意未被修改的内容保持不变
wb.save('aaa111.xls')

你可能感兴趣的