Python中的各种方法一览-xls或csv处理

本文介绍了Python中用于处理Excel文件的xlsxwriter库和pandas的to_csv方法。xlsxwriter允许设置单元格格式、写入公式和数据,而pandas的to_csv可能遇到额外列问题,可通过设置index=False解决。此外,还讲解了csv.writer如何写入多列数据,处理空行和不自动加引号的情况。
摘要由CSDN通过智能技术生成

目录

xlsxwriter

pandas的to_csv最左边多一列的问题

csv文件用csv.writer中的writerow方法写入

保存多列数据

有多余空行

不自动加引号

字符串被分割成一个字符占一个单元格的问题


xlsxwriter

xlsxwriter这个模块,它生成的文件后缀名为.xlsx,最大能够支持1048576行数据,16384列数据

wirte(row, col, *args)

向工作表单元格写入普通的数据。

参数:

  • row - 单元格所在的行(索引从0开始计数)
  • col - 单元格所在的列(索引从0开始计数)
  • *args - 传递到子方法的附加参数诸如数字,字符串,单元格格式。

Excel区分不同的数据类型诸如字符串,数字,空格,公式和超链接。为了简化向XlsxWriter文件写入数据的过程, write()方法作为以下几个特定方法的假名(译者注:意思就是通常不需要程序员显式地指定以下方法,在使用write()方法时XlxsWriter会按照规则判断数据类型并采用对应的方法写入数据):

  • write_string()
  • write_number()
  • write_blank()
  • write_formula()
  • write_datetime()
  • write_boolean()
  • write_url()

write()处理数据的规则如下:

  • 数据类型诸如float, int, long, decimal.Decimal和fractions.Fraction 使用write_number()方法。
  • 数据类型诸如datatime.datetime,datetime.datedatetime.time 或 datetime.timedelta 使用write_datetime()方法。
  • None和空字符串“”使用write_blank()方法。
  • 数据类型bool使用write_boolean()。

字符串(String)则按照以下规则处理数据:

  • 以“=”开始的匹配公式字符串使用write_formula()方法。这个方法可以被覆盖,见下。
  • 匹配支持的URL的字符串使用write_url()方法。这个方法可以被覆盖,见下。
  • 为了防止Excel警告“Numbers Stored as Text”,当Workbook()构造器strings_to_numbers选项为True时,被float()方法转换为数字的字符串会使用write_number()方法。见下。
  • 不匹配以上条件的字符串会使用write_string()方法。

如果值不匹配以上所有类型,最终会使用 float()来检查它是否与用户定义的浮点类型相对应。如果不对应,则会使用 write_number()方法。

最后,如果这些规则全都不匹配,那么程序会抛 TypeError异常。

例子

import xlsxwriter

#写excel
def write_excel(): 
  workbook = xlsxwriter.Workbook('chat.xlsx')#创建一个excel文件
  worksheet = workbook.add_worksheet(u'sheet1')#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
 
  worksheet.set_column('A:A',20)#设置第一列宽度为20像素
  bold= workbook.add_format({'bold':True})#设置一个加粗的格式对象
 
  worksheet.write('A1','HELLO')#在A1单元格写上HELLO
  worksheet.write('A2','WORLD',bold)#在A2上写上WORLD,并且设置为加粗
  worksheet.write('B2',U'中文测试',bold)#在B2上写上中文加粗
 
  worksheet.write(2,0,32)#使用行列的方式写上数字32,35,5
  worksheet.write(3,0,35.5)#使用行列的时候第一行起始为0,所以2,0代表着第三行的第一列,等价于A4
  worksheet.write(4,0,'=SUM(A3:A4)')#写上excel公式
  workbook.close()

if __name__ == '__main__':
    # 写入Excel
    write_excel();
    print ('写入成功')
   

pandas的to_csv最左边多一列的问题

设置index = False

csv文件用csv.writer中的writerow方法写入

保存多列数据

with open("gduf.csv",'a',encoding="utf-8",newline="") as f:
	writer=csv.writer(f)#先获取写入对象
	writer.writerow([title.a.text,title_url])#写入两列数据

有多余空行

加一个newline=''

with open(output_file, 'w+', newline='') as f:

不自动加引号

writer = csv.writer(file, quoting=csv.QUOTE_NONE)

字符串被分割成一个字符占一个单元格的问题

使用writerow方法必须将字符串转化成列表,否则就会一个字符占一个单元格。

所以加上[ ]即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值