在Python中处理CSV文件可以使用模块csv。有关csv模块的官方资料看这里。
1 读取csv文件
csv.reader(csvfile, dialect='excel', **fmtparams)
使用reader()函数来读取csv文件,返回一个reader对象。reader对象可以使用迭代获取其中的每一行。
>>> import csv >>> with open('userlist.csv','rt') as csv_file: csv_conent = [ row for row in csv.reader(csv_file)] >>> csv_conent [['Doctor', 'No'], ['Rosa', 'Klebb'], ['Mister', 'Big'], ['Auric', 'Goldfinger'], ['Ernst', 'Blofeld']] >>>
class csv.DictReader(csvfile, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)
可以使用DicReader()按照字典的方式读取csv内容,如下:
>>> import csv >>> with open('userlist3.csv','rt',newline='') as csvfile: reader = csv.DictReader(csvfile, fieldnames =[1,2],delimiter=':') for row in reader: print(row[1],row[2]) Doctor No Rosa Klebb Mister Big Auric Gold Ernst Blofeld >>>
2 写入csv文件
csv.writer(csvfile, dialect='excel', **fmtparams)
使用writer()函数来写csv文件,返回一个writer对象。writer对象可以使用writerow()写一行数据,或者使用。writerows()写多行数据
>>> import csv >>> namelist = [] >>> namelist = [ ['Doctor','No'], ['Rosa','Klebb'], ['Mister','Big'], ['Auric','Gold'], ['Ernst','Blofeld'], ] >>> with open('userlist2.csv','wt') as c_file: csvout = csv.writer(c_file, delimiter=':') csvout.writerows(namelist) >>> with open('userlist3.csv','wt',newline='') as c_file: csvout = csv.writer(c_file, delimiter=':') csvout.writerows(namelist)
生成的csv文件如下:
class csv.DictWriter(csvfile, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)
使用DictWriter把字典类型的数据写入到csv文件中,如下:
>>> import csv >>> villains = [ {'first': 'Doctor', 'last': 'No'}, {'first': 'Rosa', 'last': 'Klebb'}, {'first': 'Mister', 'last': 'Big'}, {'first': 'Auric', 'last': 'Goldfinger'}, {'first': 'Ernst', 'last': 'Blofeld'}, ] >>> with open('userlist3.csv','at',newline='') as csvfile: writer = csv.DictWriter(csvfile,['first','last']) writer.writerows(villains)
XML文件处理
XML是可扩展标记语言,它使用tag来分隔数据。
处理XML文件,可以使用python中的xml模块,它包含下面的几个子模块:
xml.etree.ElementTree: the ElementTree API, a simple and lightweight XML processor
xml.dom: the DOM API definition
xml.dom.minidom: a minimal DOM implementation
xml.dom.pulldom: support for building partial DOM trees
xml.sax: SAX2 base classes and convenience functions
xml.parsers.expat: the Expat parser binding
xml模块更多的相关内容参考官方文档。
使用xml.etree.ElementTree来解析处理XML文件内容,如下:
<?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank>1</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name="Austria" direction="E"/> <neighbor name="Switzerland" direction="W"/> </country> <country name="Singapore"> <rank>4</rank> <year>2011</year> <gdppc>59900</gdppc> <neighbor name="Malaysia" direction="N"/> </country> <country name="Panama"> <rank>68</rank> <year>2011</year> <gdppc>13600</gdppc> <neighbor name="Costa Rica" direction="W"/> <neighbor name="Colombia" direction="E"/> </country> </data>