读取文件

 

Python的文本处理是经常碰到的一个问题,Python的文本文件的内容读取中,有三类方法:read()、readline()、readlines(),这三种方法各有利弊

  • read()的利端
    • 方便、简单
    • 一次性独读出文件放在一个大字符串中,速度最快
  • read()的弊端
    • 文件过大的时候,占用内存会过大

 

  • readline()的利端
    • 占用内存小,逐行读取
  • readline()的弊端
    • 由于是逐行读取,速度比较慢

 

 

  • readlines()的利端
    • 一次性读取文本内容,速度比较快
  • readlines()的弊端
    • 随着文本的增大,占用内存会越来越多

 

读写csv文件

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列

特点

  • 读取出的数据一般为字符类型,如果是数字需要人为转换为数字
  • 以行为单位读取数据
  • 列之间以半角逗号或制表符为分隔,一般为半角逗号
  • 一般为每行开头不空格,第一行是属性列,数据列之间以间隔符为间隔无空格,行之间无空行

行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误。PS:已经被这个错误坑过很多次!

二、将excel文件存为csv文件

  CSV格式(Comma-Separated Values,逗号分隔值)是一种通用的,相对简单的文件格式,可应用在程序之间转移表格数据。由此看来,csv格式文件的应用还是很广大的。

所以,看看怎么转化吧 ~~~

此处的转换方式为: 优秀 --> 90,良好 --> 80, (不)合格 --> 60

 # -*- coding:utf-8
 2 '''
 3 This is a programe that can change excel into csv.
 4 @author:将暮未暮
 5 '''
 6 import pandas as pd
 7 
 8 def ExcelToCsv_1(StartName, SheetName, EndName):
 9     '''
10     函数功能: 将excel格式文件转换为csv格式文件,使用iat方法
11     StartName: excel表格的文件路径
12     SheetNmae: excel表格中的表格名称
13     EndName:   csv文件的保存路径
14     '''
15     grade = pd.read_excel(StartName, sheet_name=SheetName)
16     for i in range(len(grade.index)):
17         for j in range(1, len(grade.columns)):
18             if grade.iloc[i, j] == '优秀':
19                 grade.iat[i, j] = 90
20             elif grade.iloc[i, j] == '良好':
21                 grade.iat[i, j] = 80
22             elif grade.iloc[i, j] == '合格':
23                 grade.iat[i, j] = 60
24             else:
25                 grade.iat[i, j] = 0
26     grade.to_csv(EndName)
27 
28 
29 def ExcelToCsv_2(StartName, SheetName, EndName):
30     '''
31     函数功能: 将excel格式文件转换为csv格式文件,使用replace方法
32     StartName: excel表格的文件路径
33     SheetNmae: excel表格中的表格名称
34     EndName:   csv文件的保存路径
35     '''
36     grade = pd.read_excel(StartName, sheet_name=SheetName)
37     Grade = grade.replace("优秀", "90")
38     Grade = Grade.replace("良好", "80")
39     Grade = Grade.replace("不合格", "60")
40     Grade = Grade.replace("合格", "60")
41     Grade = Grade.fillna(value = 0)
42     Grade.to_csv(EndName)
43 
44 ExcelToCsv_2("D:\\Python_1.xlsx", "Sheet1", "D:\\Python_1.csv")
45 ExcelToCsv_1("D:\\Python_2.xlsx", "Sheet1", "D:\\Python_2.csv")

  看看转化效果吧:

 

posted @ 2019-04-29 20:50  ysd将暮未暮  阅读(332)  评论(0编辑  收藏  举报