數據存儲之json文件處理和csv文件處理

什麼是json:

JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAScript (w3c制定的js規範)的一個子集,採用徹底獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提高網絡傳輸效率。更多解釋請見:https://baike.baidu.com/item/JSON/2462549?fr=aladdinpython

JSON支持數據格式:

  1. 對象(字典)。使用花括號。
  2. 數組(列表)。使用方括號。
  3. 整形、浮點型、布爾類型還有null類型。
  4. 字符串類型(字符串必需要用雙引號,不能用單引號)。

多個數據之間使用逗號分開。
注意:json本質上就是一個字符串。編程

字典和列表轉JSON:

import json

books = [
    {
        'title': '鋼鐵是怎樣練成的',
        'price': 9.8
    },
    {
        'title': '紅樓夢',
        'price': 9.9
    }
]

json_str = json.dumps(books,ensure_ascii=False)
print(json_str)

  

由於jsondump的時候,只能存放ascii的字符,所以會將中文進行轉義,這時候咱們能夠使用ensure_ascii=False關閉這個特性。
Python中。只有基本數據類型才能轉換成JSON格式的字符串。也即:intfloatstrlistdicttuplejson

將json數據直接dump到文件中:

json模塊中除了dumps函數,還有一個dump函數,這個函數能夠傳入一個文件指針,直接將字符串dump到文件中。示例代碼以下:數組

books = [
    {
        'title': '鋼鐵是怎樣練成的',
        'price': 9.8
    },
    {
        'title': '紅樓夢',
        'price': 9.9
    }
]
with open('a.json','w') as fp:
    json.dump(books,fp)

將一個json字符串load成Python對象:

json_str = '[{"title": "鋼鐵是怎樣練成的", "price": 9.8}, {"title": "紅樓夢", "price": 9.9}]'
books = json.loads(json_str,encoding='utf-8')
print(type(books))
print(books)

直接從文件中讀取json:

import json
with open('a.json','r',encoding='utf-8') as fp:
    json_str = json.load(fp)
    print(json_str)

 

 

csv文件處理

csv文件處理
讀取csv文件:
import csv網絡

with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)
這樣操做,之後獲取數據的時候,就要經過下表來獲取數據。若是想要在獲取數據的時候經過標題來獲取。那麼能夠使用DictReader。示例代碼以下:編程語言

讀取csv文件:

import csv

with open('stock.csv','r') as fp:
    reader = csv.reader(fp)
    titles = next(reader)
    for x in reader:
        print(x)

這樣操做,之後獲取數據的時候,就要經過下表來獲取數據。若是想要在獲取數據的時候經過標題來獲取。那麼能夠使用DictReader。示例代碼以下:函數

import csv

with open('stock.csv','r') as fp:
    reader = csv.DictReader(fp)
    for x in reader:
        print(x['turnoverVol'])

寫入數據到csv文件:

寫入數據到csv文件,須要建立一個writer對象,主要用到兩個方法。一個是writerow,這個是寫入一行。一個是writerows,這個是寫入多行。示例代碼以下:ssr

import csv

headers = ['name','age','classroom']
values = [
    ('zhiliao',18,'111'),
    ('wena',20,'222'),
    ('bbc',21,'111')
]
with open('test.csv','w',newline='') as fp:
    writer = csv.writer(fp)
    writer.writerow(headers)
    writer.writerows(values)

也能夠使用字典的方式把數據寫入進去。這時候就須要使用DictWriter了。示例代碼以下:指針

import csv

headers = ['name','age','classroom']
values = [
    {"name":'wenn',"age":20,"classroom":'222'},
    {"name":'abc',"age":30,"classroom":'333'}
]
with open('test.csv','w',newline='') as fp:
    writer = csv.DictWriter(fp,headers)
    writer = csv.writeheader()
    writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
    writer.writerows(values)

筆記

import csv

# 經過下標讀取文件
# def read_csv_demo():
#     with open('', 'r') as fp:
#         # reader是一個迭代器
#         reader = csv.reader(fp)
#         # next 會對迭代器會從開始位置加一位
#         next(reader)
#         for x in reader:
#             name = [3]
#             other = [-1]
#             print({'name': name, 'other': other})


# 經過字典讀取文件
# def read_csv_demo2():
#     with open('', 'r') as fp:
#         # 使用DictReader建立的reader對象
#         # 不會包含的那行數據
#         reader = csv.DictReader(fp)
#         for x in reader:
#             value = {'name':x['name'],'other':x['other']}
#             print(value)


# 經過寫入文件
def read_csv_demo3():
    headers = ['username', 'age', 'height']

    values = [
        {'張三', '18', '156'},
        {'李四', '19', '184'},
        {'王五', '20', '168'}
    ]

    # newline 是寫入一行後作的事
    with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.writer(fp)
        # 寫入表頭
        writer.writerow(headers)
        # 寫入數據
        writer.writerows(values)


# 經過字典寫入文件
def read_csv_demo4():
    headers = ['username', 'age', 'height']

    values = [
        {'username':'張三', 'age':18, 'height':156},
        {'username':'李四', 'age':19, 'height':184},
        {'username':'王五', 'age':20, 'height':168}
    ]
    # newline 是寫入一行後作的事
    with open('classroom2.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.DictWriter(fp,headers)
        # 寫入表頭數據的時候,須要執行writeheader函數
        writer.writeheader()
        writer.writerows(values)


if __name__ == '__main__':
    read_csv_demo4()
相關文章
相關標籤/搜索