zoukankan      html  css  js  c++  java
  • 文件操作之转换CSV文件

    一、文件读写

    以只读方式打开

    rU或U

    以读方式打开,同时提供通用换行符支持

    w

    以写方式打开,如果文件已经存在,会覆盖掉原来的数据

    以追加模式打开,在文件后面追加数据,不能读

    r+

    以读写模式打开

    w+

    以读写模式打开,参见w

    a+

    以读写追加模式打开,参见a

    rb

    以二进制读模式打开

    wb

    以二进制写模式打开

    ab

    以二进制追加模式打开

    rb+

    以二进制读写模式打开

     

    wb+

    以二进制读写模式打开

     

    ab+

    以二进制读写追加模式打开

     

    二、读取文件中的数据

    * 使用read方法一次性读取所有的数据使用,包括换行符

    * 使用readline方法每次只读取一行数据,包括换行符

    * 使用readlines方法一次性读取完所有数据,包括换行符,并以列表的形式返回,列表中的每个元素就是原文件的一行

    * 使用for循环迭代读取

    * 使用列表推导式来将文件的每一行都读取到列表中去

    三、xlsx文件转换为cvs文件

    (一)Pandas简介

    1、Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

    2、Pandas 是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。

    3、数据结构:

    Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
    Time- Series:以时间为索引的Series。
    DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
    Panel :三维的数组,可以理解为DataFrame的容器。
    Pandas 有两种自己独有的基本数据结构。读者应该注意的是,它固然有着两种数据结构,因为它依然是 Python 的一个库,所以,Python 中有的数据类型在这里依然适用,也同样还可以使用类自己定义数据类型。只不过,Pandas 里面又定义了两种数据类型:Series 和 DataFrame,它们让数据操作更简单了。
    import pandas as pd
    df = pd.read_excel('Python成绩登记信计.xlsx')#读写文件
    da = df.to_csv('E:Anaconda之作业Python成绩登记信计.csv')#更改xlsx文件为csv文件
    da = pd.read_csv('E:Anaconda之作业Python成绩登记信计.csv',index_col=0)#读取文件
    da = da.replace('优秀','90')   #替换数据
    da = da.replace('良好','80')
    da = da.replace('合格','60')
    da = da.replace('不合格','10')
    da = da.fillna(0)
    print(da)
    dc = da.to_csv('E:Anaconda之作业Python成绩登记信计.csv')#保存csv文件

    如下图所示效果

    四、更改csv文件为html文件

    seg1 = '''
    <!DOCTYPE HTML>
    <html>
    <body>
    <meta charset=utf-8>
    <h1 align=center>Python成绩登记信计</h1>
    <table border='1' align="center" width=100%>
    <tr bgcolor='yellow'>
    '''
    #创建一个HTML文件表格,包括标题,宽度
    seg2="</tr>
    "
    seg3="</table>
    </body>
    </html>"
    def fill_data(locls):#创建表格内容
        seg = '<tr><td align="center">{}</td><td align="center">
        {}</td><td align="center">{}</td><td align="center">
        {}</td ><td align="center">{}</td></tr><td align="center">{}</td></tr>
    '.format(*locls)
        return seg
    fr = open("E:Anaconda之作业Python成绩登记信计.csv","r",encoding='utf-8')#打开文件
    ls = []
    for line in fr:#将文件内容导入表格
        line = line.replace("
    ","")
        ls.append(line.split(","))#去除逗号分隔符
    print(ls)
    fr.close()#关闭文件
    fw = open("E:Anaconda之作业Python成绩登记信计.html","w",encoding='utf-8')#操作HTML文件
    fw.write(seg1)
    fw.write('<th width="10%">{}</th>
    <th width="10%">{}</th>
    <th width="10%">{}</th>
    <th width="10%">{}</th>
    <th width="10%">{}</th>
    <th width="10%">{}</th>
    '.format(*ls[0]))#写入文件中的数据到表格中
    fw.write(seg2)#写入数据
    for i in range(len(ls)-1):#进行循环,写入数据
        fw.write(fill_data(ls[i+1]))
    fw.write(seg3)
    fw.close#关闭并保存文件

     效果如下

    大功告成,注意charset=utf-8是指html文件的编码语言,一定要好好核对,文件打开的编码一定要适合该文件或编程语言,不然就会出错。

  • 相关阅读:
    c#设计模式工厂模式
    海量数据,SQL查询优化
    正则判断字符串是否为数字
    NSString的用法
    HTML常用标签及属性图
    ADO的东西还是很多啊!
    MVC3中的tempdata,viewdata,viewbag总结
    sql 查询,删除重复的记录
    MVC3 Razor语法
    Winform TreeView 节点CheckBox选中,取消
  • 原文地址:https://www.cnblogs.com/asd516970982/p/10835773.html
Copyright © 2011-2022 走看看