python数据处理

csv数据处理csv表示”Comma-Separated Values(逗号分隔的值)”,csv文件时简化的电子表格,保存为纯文本文件。python中解析csv文件可以使用csv模块。注意:csv是文本文件,通过打开文件的操作,将其内容读入一个字符串,然后通过字符串的split()方法处理每行文本取得值。需要注意csv文件中也有自己的转义字符,允许逗号或者其他字符作为值的一部分,split()方法...
摘要由CSDN通过智能技术生成

一、csv数据处理

csv表示”Comma-Separated Values(逗号分隔的值)”,csv文件时简化的电子表格,保存为纯文本文件。
python中解析csv文件可以使用csv模块。
注意:csv是文本文件,通过打开文件的操作,将其内容读入一个字符串,然后通过字符串的split()方法处理每行文本取得值。需要注意csv文件中也有自己的转义字符,允许逗号或者其他字符作为值的一部分,split()方法无法处理这部分转义字符。所以处理csv文件时为避免这些潜在的问题,建议使用csv模块处理csv文件。

Reader

使用csv模块从csv文件中读取数据,需要创建一个Reader对象,可以通过Reader对象迭代遍历csv文件中的每一行。

1
2
3
4
5
6
import csv

with open("example.csv", encoding='utf-8') as dataObject:
    dataReader = csv.reader(dataObject)
    for row in dataReader:
        print("第{0}行:{1}".format(dataReader.line_num, row))

Reader对象的line_num变量是当前的行号。
输出结果

1
2
3
1行:['2018/06/09', 'Apples', '73']
2行:['2018/06/10', 'Cherries', '85']
3行:['2018/06/11', 'Pears', '14']

Writer

Write对象可以将数据写入到csv文件中。
首先调用open()并传入w,以写模式打开一个文件。这时会创建一个对象。
然后将创建的对象传递给csv.writer(),创建一个Writer对象。
接下来调用Writer对象的writerow()方法写入文件。该方法接受参数为列表,返回值为写入文件这一行中的字符数(包括换行符)。

1
2
3
4
5
6
7
import csv

with open("test.csv", 'w', encoding='utf-8', newline='') as outputFile:
    dataWriter = csv.writer(outputFile)
    dataWriter.writerow(['a', 'b', 'c'])
    dataWriter.writerow(['啊', '吧', '次'])
    dataWriter.writerow(['A', 'Hello,World!', 'C'])

最后输出结果

1
2
3
a,b,c
啊,吧,次
A,"Hello,World!",C

此处的Hello,Wrold!中的逗号自动转义,使用双引号处理了。
在windows中open()需加上newline=''参数,否则将出现2倍行距的情况。
写入的文件必须已经存在。

  • delimiter 指定分隔符,默认为逗号
  • lineterminator 行距,默认为单倍行距
    1
    
    dataWriter = csv.writer(outputFile, delimiter='\t', lineterminator='\n\n')
    

上面表示使用制表符作为分隔符,两倍行距(也就是行之间字符变为2个换行符)。

二、excel数据处理

python提供有第三方库来支持对excel的操作,python处理excel文件用的第三方模块库有xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块。下面我们先安装第三方库:
Pip install xlrd
Pip install xlwt
Pip install xluntils
Pip install pyExcelerator

Xlrd只能进行读取excel文件,没法进行写入文件,xlwt可以写入文件,但是不能在已有的excel的文件上进行修改,如果有这个需求,就需要使用xluntils模块了,pyExcelerator模块与xlwt类似,也可以用来生成excel文件。

2.1读取单表文件:
import xlrd

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

readExcel()
2.2 读取单表文件复杂例子:
# 打开一个workbook
workbook = xlrd.open_workbook('testdata.xlsx')
# 抓取所有sheet页的名称
worksheets = workbook.sheet_names()
print(workbook.sheets())
print('worksheets is {0}'.format(worksheets))
# 定位到sheet1
# worksheet1 = workbook.sheet_by_name(u'Sheet1')
worksheet1 = workbook.sheets()[1]
"""
#通过索引顺序获取
worksheet1 = workbook.sheets()[0]
"""
"""
#遍历所有sheet对象
for worksheet_name in worksheets:
worksheet = workbook.sheet_by_name(worksheet_name)
"""
# 遍历sheet1中所有行row
num_rows = worksheet1.nrows
for curr_row in range(num_rows):
    row = worksheet1.row_values(curr_row)
    print('row%s is %s' % (curr_row, row))
# 遍历sheet1中所有列col
num_cols = worksheet1.ncols
for curr_col in range(num_cols):
    col = worksheet1.col_values(curr_col)
    print('col%s is %s' % (curr_col, col))
# 遍历sheet1中所有单元格cell
for rown in range(num_rows):
    for coln in range(num_cols):
        cell = worksheet1.cell_value(rown, coln)
        print(cell)
2.3、写入excel文件
import xlwt
#创建workbooksheet对象
workbook = xlwt.Workbook() #注意Workbook的开头W要大写
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,'this should overwrite1')
sheet1.write(0,1,'aaaaaaaaaaaa')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'bbbbbbbbbbbbb')

#-----------使用样式-----------------------------------
#初始化样式
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('test2.xls')
print('创建excel文件完成!')
2.4、Excele来处理超链接
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)
    sheet_index.write(line, 0, xlwt.Formula(link))
    line += 1
book.save('simple2.xls')
for i in range(0, 9):
    file = str(i) + ".txt"
    with codecs.open(file, 'w') as f:
        f.write(str(i)*10)
2.5、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')






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值