json、csv文本處理

json概念及支持的數據格式

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。
支持字典、列表(使用花括號)、整形、浮點型、布爾類型、null。字符串類型,字符串必須使用雙引號,不能用單引號。json本質上就是一個字符串。在Python中。只有基本數據類型才能轉換成JSON格式的字符串。也即:int、float、str、list、dict、tuple。

字典和列表與json的轉換

dumps:將字典和列表,直接轉換爲json。
dump:將數據直接dump到文件中。

import json
info = [
    {
    'name':'coffee',
    'age':18

    },
    {
        'name': '張山',
        'age': 20

    }
]
#因爲json在dump的時候,只能存放ascii的字符,因此會將中文進行轉義,這時候我們可以使用ensure_ascii=False關閉這個特性。
json_str = json.dumps(info,ensure_ascii=False)
print(json_str,type(json_str))
with open('info.json','w',encoding='utf-8') as fp:
    json.dump(info,fp,ensure_ascii=False)

在這裏插入圖片描述
在這裏插入圖片描述loads:將一個json字符串解析成python對象
load:直接從文件中讀取json。

import  json
info_json = '[{"name": "coffee", "age": 18}, {"name": "張山", "age": 20}]'
info = json.loads(info_json,encoding='utf-8')
print(info,type(info))
with open('info.json','r',encoding='utf-8') as fp:
    info_file = json.load(fp)
    print(info_file,type(info_file))

在這裏插入圖片描述

什麼是CSV

逗號分隔值(Comma-Separated Values,CSV,有時也稱爲字符分隔值,因爲分隔字符也可以不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。純文本意味着該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最常見的是逗號或製表符。通常,所有記錄都有完全相同的字段序列。通常都是純文本文件。建議使用WORDPAD或是記事本來開啓,再則先另存新檔後用EXCEL開啓,也是方法之一。

規則:
1 開頭是不留空,以行爲單位。
2 可含或不含列名,含列名則居文件第一行。
3 一行數據不跨行,無空行。
4 以半角逗號(即,)作分隔符,列爲空也要表達其存在。
5列內容如存在半角引號(即"),替換成半角雙引號("")轉義,即用半角引號(即"")將該字段值包含起來。
6文件讀寫時引號,逗號操作規則互逆。
7內碼格式不限,可爲 ASCII、Unicode 或者其他。
8不支持數字
9不支持特殊字符

寫入數據到CSV文件:

寫入數據到csv文件,需要創建一個writer對象,主要用到兩個方法。一個是writerow,這個是寫入一行。一個是writerows,這個是寫入多行。

import csv

headers = ['name','age','sex']
values = [
    ('coffee',18,'男'),
    ('floating',20,'女'),
    ('k',33,'男')
]
with open('info.csv','w',newline='') as fp:
    writer = csv.writer(fp)
    writer.writerow(headers)
    writer.writerows(values)

DictWriter:使用自字典的方式把數據寫入CSV文件中。

import csv
headers = ['name','age','sex']
values = [
    {"name":'coffee',"age":18,"sex":"男"},
    {"name":'floating',"age":20,"sex":"女"}
]
with open('info.csv','w',newline='') as fp:
    writer = csv.DictWriter(fp,headers)
    writer.writeheader()
    writer.writerows(values)
    writer.writerow({"name":'k',"age":33,"sex":"男"})

在這裏插入圖片描述

讀取CSV文件

使用reader,返回一個生成器。

import  csv
with open('info.csv','r') as fp:
    reader = csv.reader(fp)
    title = next(reader)
    print(title)
    for x in reader:
        print(x)
        print(x[0])

在這裏插入圖片描述
這樣操作,以後獲取數據的時候,就要通過下表來獲取數據。如果想要在獲取數據的時候通過標題來獲取。那麼可以使用DictReader。

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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章