zoukankan      html  css  js  c++  java
  • Python--进阶处理6

    # =================第六章:数据编码和处理======================

    # 读CSV文件
    # 数据读取为一个元组的序列
    import csv
    # with open('E:/stocks.csv') as f:
    # f_csv = csv.reader(f)
    # headers = next(f_csv)
    # for row in f_csv:
    # print(row[0], row[4])
    # # 数据读取到一个字典序列中去
    # with open('E:/stocks.csv') as f:
    # f_csv = csv.DictReader(f)
    # for row in f_csv:
    # print(row['Symbol'], row['Time'])

    # 写CSV文件
    headers = ['Symbol','Price','Date','Time','Change','Volume']
    # rows = [
    # ('AA', 39.48, '6/11/2007', '9:36am', -0.18, 181800),
    # ('AIG', 71.38, '6/11/2007', '9:36am', -0.15, 195500),
    # ('AXP', 62.58, '6/11/2007', '9:36am', -0.46, 935000)
    # ]
    # with open('E:/stocks.csv', 'w', newline='') as f:
    # f_csv = csv.writer(f)
    # f_csv.writerow(headers)
    # f_csv.writerows(rows)

    rows = [
    {'Symbol':'AA', 'Price':39.48, 'Date':'6/11/2007',
    'Time':'9:36am', 'Change':-0.18, 'Volume':181800},
    {'Symbol':'AIG', 'Price': 71.38, 'Date':'6/11/2007',
    'Time':'9:36am', 'Change':-0.15, 'Volume': 195500},
    {'Symbol':'AXP', 'Price': 62.58, 'Date':'6/11/2007',
    'Time':'9:36am', 'Change':-0.46, 'Volume': 935000}
    ]
    # with open('E:/1.csv', 'w', newline='') as f:
    # f_csv = csv.DictWriter(f, headers)
    # f_csv.writeheader()
    # f_csv.writerows(rows)

    # 读写json数据
    import json

    data = {
    'name':'qf',
    'shares':100,
    'price':542.23
    }

    # 将一个Python 数据结构转换为JSON
    json_str = json.dumps(data)
    print(json_str)
    # 将一个JSON 编码的字符串转换回一个Python 数据结构
    data_dict = json.loads(json_str)
    print(data_dict)
    # 如果要处理的是文件而不是字符串,你可以使用json.dump() 和json.load()来编码和解码JSON 数据
    with open('data.json', 'w') as f:
    json.dump(data, f)
    with open('data.json', 'r') as f:
    data = json.load(f)

    # pprint 模块的pprint() 函数
    # 按照key 的字母顺序并以一种更加美观的方式输出
    print(data)
    from pprint import pprint
    pprint(data)

    # 将一个JSON 字典转换为一个Python 对象例子
    s = '{"name": "ACME", "shares": 50, "price": 490.1}'
    class JSONObject:
    def __init__(self, d):
    self.__dict__ = d

    data1 = json.loads(s, object_hook=JSONObject)
    print(data1.name, data1.price)
    print(json.dumps(data, indent=4))

    # 从一个简单的XML 文档中提取数据
    # 可以使用xml.etree.ElementTree 模块从简单的XML 文档中提取数据
    from xml.etree.ElementTree import parse

    # doc = parse('somefile.xml')
    # for item in doc.iterfind('channel/item'):
    # title = item.findtext('title')
    # print(title)

    # ElementTree 模块中的每个元素有一些重要的属性和方法,在解析的时候非常有用。
    # tag 属性包含了标签的名字,text 属性包含了内部的文本,而get() 方法能获取属性值

    # e = doc.find('channel/item')
    # print(e.tag)
    # print(e.text)
    # print(e.get('some_attribute'))

    # 使用尽可能少的内存从一个超大的XML 文档中提取数据
    # 任何时候只要遇到增量式的数据处理时,第一时间就应该想到迭代器和生成器
    from xml.etree.ElementTree import iterparse
    # 使用一个Python 字典存储数据,并将它转换成XML 格式
    from xml.etree.ElementTree import Element, tostring

    def dict_to_xml(tag, d):
    elem = Element(tag)
    for key, val in d.items():
    child = Element(key)
    child.text = str(val)
    elem.append(child)
    return elem
    s = {'name':'qf', 'shares':99, 'price':680.8}
    e = dict_to_xml('stock', s)
    # xml.etree.ElementTree 中的tostring() 函数很容易就能将它转换成一个字节字符串
    print(tostring(e))
    # 如果想给某个元素添加属性值,可以使用set() 方法
    e.set('_id', '123')

    # 与关系型数据库的交互
    # 1.连接到数据库
    # 2.创建一个游标
    # 3.执行sql
    # 类似SQLAlchemy 这样的库允许你使用Python 类来表示一个数据库表

    # 编码和解码十六进制数
    # 只是简单的解码或编码一个十六进制的原始字符串,可以使用 binascii 模块
    import binascii
    s = b'hello'
    h = binascii.b2a_hex(s)
    print(h)
    hh = binascii.a2b_hex(h)
    print(hh)

    # 编码和解码base64数据
    # 使用base64 模块中的两个函数 b64encode() 和 b64decode()
    # Base64 编码仅仅用于面向字节的数据
    import base64
    a = base64.b64encode(s)
    aa = base64.b64decode(a)
    print(a, aa)

    # 对于需要编码和解码二进制数据的程序而言,通常会使用struct 模块

    # -----------------------------pandas 库------------------------------
    # 数据的累加与统计操作
    # 对于任何涉及到统计、时间序列以及其他相关技术的数据分析问题,都可以考虑使用Pandas 库
    # Pandas 是一个拥有很多特性的大型函数库,我在这里不可能介绍完。但是只要你
    #需要去分析大型数据集合、对数据分组、计算各种统计量或其他类似任务的话,这个
    #函数库真的值得你去看一看




  • 相关阅读:
    django template extends
    python sys.path的用法
    django form 显示
    django form 验证
    WingIDE 下载,介绍和配置
    python startswith
    django reverse()
    python 动态创建类
    django form 定义
    如何学习python
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/8436083.html
Copyright © 2011-2022 走看看