• csv 库


    csv(Comma-Separated Values, 逗号分割值)是存储表格数据的常用文件格式。

    它每一行都用一个换行符分隔,列与列之间用逗号分隔。

    本地文件

    Python的csv库可以非常简单地修改csv文件,甚至从零开始创建一个csv文件。

    比如:

    import csv
    
    csvFile = open("../files/test.csv",'w+')
    try:
        writer = csv.writer(csvFile)
        writer.writerow(('number','number plus 2','number times 2'))
        for i in range(10):
            writer.writerow((i,i+2,i*2))
    finally:
        csvFile.close()
    

    其中writerow()用来写入行。

    网络文件

    对于网络上的csv文件,我们可以直接把文件读成一个字符串,然后转换成一个StringIO对象,使它具有文件的属性。

    比如说从网上获取Monty Python乐团的专辑列表,然后把每一行都打印到命令行里。

    from urllib.request import urlopen
    from io import StringIO
    import csv
    
    data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii','ignore')
    dataFile = StringIO(data)
    csvReader = csv.reader(dataFile)
    
    for row in csvReader:
        print("The album ""+row[0]+"" was released in "+str(row[1]))
    

    输出结果是这样的

    The album "Name" was released in Year
    The album "Monty Python's Flying Circus" was released in 1970
    The album "Another Monty Python Record" was released in 1971
    ...
    

    所以可以发现这个csv.reader返回的csvReader对象是可迭代的,而且是一个Python的列表。

    还有一个csv.DictReader函数,它返回的对象是一个Python的字典。

    from urllib.request import urlopen
    from io import StringIO
    import csv
    
    data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ascii','ignore')
    dataFile = StringIO(data)
    csvReader = csv.DictReader(dataFile)
    
    print(dictReader.fieldnames)
    
    for row in dictReader:
        print(row)
    

    输出结果

    ['Name','Year']
    {'Name':"Monty Python's Flying Circus",'Year':'1970'}
    {'Name':"Another Monty Python Record",'Year':'1971'}
    ...
    

    【参考】

    [1]《Python网络数据采集》Ryan Mitchell

  • 相关阅读:
    Android Studio使用
    VS.NET发送会议邮件程序原码
    C#中渐变色的代码实例,用于自绘菜单
    VS.NET获取某年某月的天数
    AJAX原理简要说明及实例
    ASP.NET下增加定时器功能
    VS.NET发送普通邮件原码
    保存xml到server实例
    VS.NET通过OUTLOOK发邮件
    利用IE打印的一点实例代码
  • 原文地址:https://www.cnblogs.com/IvyWong/p/10086562.html
Copyright © 2020-2023  润新知