文件操做之轉換CSV文件

1、文件讀寫html

python

以只讀方式打開編程

rU或Uapi

以讀方式打開,同時提供通用換行符支持數組

w數據結構

以寫方式打開,若是文件已經存在,會覆蓋掉原來的數據app

編程語言

以追加模式打開,在文件後面追加數據,不能讀函數

r+工具

以讀寫模式打開

w+

以讀寫模式打開,參見w

a+

以讀寫追加模式打開,參見a

rb

以二進制讀模式打開

wb

以二進制寫模式打開

ab

以二進制追加模式打開

rb+

以二進制讀寫模式打開

 

wb+

以二進制讀寫模式打開

 

ab+

以二進制讀寫追加模式打開

 

2、讀取文件中的數據

* 使用read方法一次性讀取全部的數據使用,包括換行符

* 使用readline方法每次只讀取一行數據,包括換行符

* 使用readlines方法一次性讀取完全部數據,包括換行符,並以列表的形式返回,列表中的每一個元素就是原文件的一行

* 使用for循環迭代讀取

* 使用列表推導式來將文件的每一行都讀取到列表中去

 

3、xlsx文件轉換爲cvs文件

 

(一)Pandas簡介

 

一、Python Data Analysis Library 或 pandas 是基於NumPy 的一種工具,該工具是爲了解決數據分析任務而建立的。Pandas 歸入了大量庫和一些標準的數據模型,提供了高效地操做大型數據集所需的工具。pandas提供了大量能使咱們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成爲強大而高效的數據分析環境的重要因素之一。

 

二、Pandas 是python的一個數據分析包,最初由AQR Capital Management於2008年4月開發,並於2009年末開源出來,目前由專一於Python數據包開發的PyData開發team繼續開發和維護,屬於PyData項目的一部分。Pandas最初被做爲金融數據分析工具而開發出來,所以,pandas爲時間序列分析提供了很好的支持。 Pandas的名稱來自於面板數據(panel data)和python數據分析(data analysis)。panel data是經濟學中關於多維數據集的一個術語,在Pandas中也提供了panel的數據類型。

 

三、數據結構:

 

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文件

以下圖所示效果

 

 

 

4、更改csv文件爲html文件

 

seg1 = '''
<!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=utf-8>
<h1 align=center>Python成績登記信計</h1>
<table border='1' align="center" width=100%>
<tr bgcolor='yellow'>\n'''
#建立一個HTML文件表格,包括標題,寬度
seg2="</tr>\n"
seg3="</table>\n</body>\n</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>\n'.format(*locls)
    return seg
fr = open("E:\Anaconda之做業\Python成績登記信計.csv","r",encoding='utf-8')#打開文件
ls = []
for line in fr:#將文件內容導入表格
    line = line.replace("\n","")
    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>\n<th width="10%">{}</th>\n<th width="10%">{}</th>\n<th width="10%">{}</th>\n<th width="10%">{}</th>\n<th width="10%">{}</th>\n'.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文件的編碼語言,必定要好好覈對,文件打開的編碼必定要適合該文件或編程語言,否則就會出錯。