美文网首页
2019实战第二期-文件格式读书打卡

2019实战第二期-文件格式读书打卡

作者: tipire | 来源:发表于2019-03-25 23:26 被阅读0次

    2019实战第二期-文件格式读书打卡

    读《Python编程快速上手—让繁琐工作自动化 PDF中文高清晰完整版》笔记

    csv模块

    CSV 文件是简单的,缺少 Excel 电子表格的许多功能。例如,CSV 文件中:
    • 值没有类型,所有东西都是字符串;
    • 没有字体大小或颜色的设置;
    • 没有多个工作表;
    • 不能指定单元格的宽度和高度;
    • 不能合并单元格;
    • 不能嵌入图像或图表

    测试使用的example.csv文件格式:

    4/5/2015 13:34,Apples,73
    4/5/2015 3:41,Cherries,85
    4/6/2015 12:46,Pears,14
    4/8/2015 8:59,Oranges,52
    4/10/2015 2:07,Apples,152
    4/10/2015 18:10,Bananas,23
    4/10/2015 2:40,Strawberries,98
    
    Reader对象

    要用csv模块从CSV文件中读取数据,需要创建一个Reader对象

    import csv
    exampleFile = open('example.csv')
    exampleReader = csv.reader(exampleFile)
    exampleData = list(exampleReader)
    

    CSV 文件表示为列表的列表,就可以用表达式 exampleDatarow来访问特定行和列的值。其中,row 是exampleData 中一个列表的下标,col 是该列表中你想访问的项的下标。exampleData0进入第一个列表

    遍历Reader对象的数据

    import csv
    exampleFile = open('example.csv')
    exampleReader = csv.reader(exampleFile)
    for row in exampleReader:
        print('Row #' + str(exampleReader.line_ _num) + ' ' + str(row))
    
    Writer对象

    Writer 对象让你将数据写入 CSV 文件。要创建一个 Writer 对象,就使用csv.writer()函数。

    import csv
    outputFile = open('output.csv', 'w', newline='')
    outputWriter = csv.writer(outputFile)
    outputWriter.writerow(['spam', 'eggs', 'bacon', 'ham'])
    outputWriter.writerow(['Hello, world!', 'eggs', 'bacon', 'ham'])
    outputWriter.writerow([1, 2, 3.141592, 4])
    outputFile.close()
    
    delimiter 和 lineterminator 关键字参数

    用制表符代替逗号来分隔单元格,并希望有两倍行距。

    import csv
    csvFile = open('example.tsv', 'w', newline='')
    csvWriter = csv.writer(csvFile, delimiter='\t', lineterminator='\n\n')
    csvWriter.writerow(['apples', 'oranges', 'grapes'])
    csvWriter.writerow(['eggs', 'bacon', 'ham'])
    csvWriter.writerow(['spam', 'spam', 'spam', 'spam', 'spam', 'spam'])
    csvFile.close()
    

    csv实战项目

    从CSV文件中删除表头,自动化删除几百个CSV文件的第一行

    • 找出当前工作目录中的所有 CSV 文件。
    • 读取每个文件的全部内容。
    • 跳过第一行,将内容写入一个新的 CSV 文件。在代码层面上,这意味着该程序需要做到以下几点:
    • 循环遍历从 os.listdir()得到的文件列表,跳过非 CSV 文件。
    • 创建一个 CSV Reader 对象,读取该文件的内容,利用 line_num 属性确定要跳过哪一行。
    • 创建一个 CSV Writer 对象,将读入的数据写入新文件。针对这个项目,打开一个新的文件编辑器窗口,并保存为removeCsvHeader.py。

    import os
    import csv
    for csvFilename in os.listdir('.'):
        if not csvFilename.endswith('.csv'):
            continue # skip non-CSV files
    
        csvRows = []
        csvFileObj = open(csvFilename)
        readerObj = csv.reader(csvFileObj)
        for row in readerObj:
            if readerObj.line_ _num == 1:
                continue # skip first row
            csvRows.append(row)
        csvFileObj.close()
    
        # Write out the CSV file.
        csvFileObj = open(os.path.join('headerRemoved', csvFilename), 'w',newline='')
        csvWriter = csv.writer(csvFileObj)
        for row in csvRows:
            csvWriter.writerow(row)
        csvFileObj.close()
    

    json模块

    Python 的 json 模块处理了 JSON 数据字符串和 Python 值之间转换的所有细节,得到了 json.loads()和 json.dumps()函数。JSON 不能存储每一种 Python 值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和 NoneType。JSON 不能表示 Python 特有的对象,如 File 对象、CSV Reader 或 Writer 对象、Regex对象或 Selenium WebElement 对象

    用 loads()函数读取 JSON

    调用 loads(),向它传入一个 JSON 数据字符串,返回一个Python字典

    import json
    stringOfJsonData = '{"name": "Zophie", "isCat": true, "miceCaught": 0,"felineIQ": null}'
    jsonDataAsPythonValue = json.loads(stringOfJsonData)
    
    用 dumps 函数写出 JSON

    json.dumps()函数(它表示“dump string”,而不是 “dumps”)将一个 Python 值转换成 JSON 格式的数据字符串

    import json
    pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie','felineIQ': None}
    stringOfJsonData = json.dumps(pythonValue)
    

    json实战项目

    取得当前的天气数据

    • 从命令行读取请求的位置。
    • 从 OpenWeatherMap.org 下载 JSON 天气数据。
    • 将 JSON 数据字符串转换成 Python 的数据结构。
    • 打印今天和未来两天的天气。因此,代码需要完成以下任务:
    • 连接 sys.argv 中的字符串,得到位置。
    • 调用 requests.get(),下载天气数据。
    • 调用 json.loads(),将 JSON 数据转换为 Python 数据结构。
    • 打印天气预报。针对这个项目,打开一个新的文件编辑器窗口,并保存为 quickWeather.py

    import json
    import requests
    import sys
    
    # Compute location from command line arguments.
    if len(sys.argv) < 2:
        print('Usage: quickWeather.py location')
        sys.exit()
    location = ' '.join(sys.argv[1:])
    
    # Download the JSON data from OpenWeatherMap.org's API.
    url = 'http://api.openweathermap.org/data/2.5/forecast/daily?q=%s&cnt=3' % (location)
    response = requests.get(url)
    response.raise__for__status()
    
    
    # Load JSON data into a Python variable.
    weatherData = json.loads(response.text)
    # Print weather descriptions.
    w = weatherData['list']
    print('Current weather in %s:' % (location))
    print(w[0]['weather'][0]['main'], '-', w[0]['weather'][0]['description'])
    print()
    print('Tomorrow:')
    print(w[1]['weather'][0]['main'], '-', w[1]['weather'][0]['description'])
    print()
    print('Day after tomorrow:')
    print(w[2]['weather'][0]['main'], '-', w[2]['weather'][0]['description'])
    

    相关文章

      网友评论

          本文标题:2019实战第二期-文件格式读书打卡

          本文链接:https://www.haomeiwen.com/subject/reoivqtx.html