python對json對象或json數組操作以及讀寫各類txt,csv,html,xls文件的工具類


1.對json數組和json對象的操作

在python中,一個 Json 對象里面包含了很多信息,那么如何從這些數據中拿到我們想要的呢?
在之前的

python對象與json格式的數據類型轉化

一文中已經說明如何操作一個json對象,本文是再補充一個常見的還有處理 Json 數組 的。

python 的 json 模塊有兩個主要的函數。

1.python 對象轉化為 json格式:

    json.dumps()

2.將json數據轉化為python對象:

    json.loads()

就是:

1 import json
2 Json.dumps()      # 將字典或列表轉為json格式的字符串
3 Json.loads()        # 將json格式字符串轉化為python對象
4 Json.dump()        # 將字典或列表轉為json字符串並且寫入到文件中
5 Json.load()           # 從文件中讀取json格式字符串轉化為python對象

總之記住:
(帶s的都是對string操作,不帶s就是對txt之類的文件操作。)

再不明白的,具例子:

源碼:

 1 """
 2 一、第一部分為: Json格式與python對象的相互轉換
 3 """
 4 
 5 import json
 6 
 7 # 普通的json單列表
 8 jsondata = '''
 9 {
10     "Uin":0,
11     "UserName":"@c482d142bc698bc3971d9f8c26335c5c",
12     "NickName":"CSDNzoutao",
13     "HeadImgUrl":"https://blog.csdn.net/ITBigGod",
14     "DisplayName":"ZouTao",
15     "ChatRoomId":0,
16     "KeyWord":"che",
17     "EncryChatRoomId":"",
18     "IsOwner":0
19 }
20 '''
21 
22 myfriend = json.loads(jsondata)  # json轉化字典對象
23 print(myfriend)
24 # 轉為字典以后,就可以根據key來獲取各種字段數值了
25 name = myfriend.get('NickName')
26 print(name)
27 # json.dumps(name) #將python對象轉化為json
28 
29 # 常見的還有 Json 數組-嵌套型
30 Json_doc='''
31     {
32         "MemberList": [{
33                 "UserName": "CSDNzoutao",
34                 "Sex": "男",
35                 "Age":10
36             },
37             {
38                 "UserName": "CSDNzoutao的1號女朋友",
39                 "Sex": "女",
40                 "Age":10
41             },
42             {
43                 "UserName": "CSDNzoutao的2號女朋友",
44                 "Sex": "不限",
45                 "Age":10
46             }]
47     }
48     '''
49 
50 myfriends = json.loads(Json_doc)
51 memberList = myfriends.get('MemberList')  # 得到list對象-包含字典數據
52 print(memberList)
53 
54 # 用個 for 循環就能輕而易舉的獲取數據
55 for x in memberList:
56     print('遍歷list數據:',x)

圖示:

 

 

2.python讀寫各類txt,csv,html,xls文件的工具類

以上面的那個json格式字符串和python對象為輸入數據memberList。

python讀寫各類txt,csv,html,xls文件的方式:

源碼:

  1 '''
  2 二、第二部分為: python讀寫各類txt,csv,html,xls文件的方式
  3 '''
  4 
  5 # 保存為txt文件
  6 def output_txt(result):
  7     print('數據類型為:',type(result)) # <class 'dict'>
  8     with open('result.txt','a',encoding='utf-8') as f:
  9         f.write(json.dumps(result,ensure_ascii=False)+'\n')  # 將字典或列表轉為josn格式的字符串
 10 
 11     # 讀取txt文件
 12     with open("result.txt", "r", "utf-8") as f:
 13         # 為a+模式時,因為為追加模式,指針已經移到文尾,讀出來的是一個空字符串。
 14         ftext = f.read()  # 一次性讀全部成一個字符串
 15         ftextlist = f.readlines()  # 一次性讀全部,但每一行作為一個子句存入一個列表
 16         fline = f.readline()       # 或者只讀取1行
 17         print(ftextlist,fline)
 18         f.close()  # 關閉文件
 19 ## 總結:以后讀寫文件都使用with open語句,不要再像以前那樣用f = open()這種語句了!
 20 
 21 
 22 # 保存為html文件
 23 def output_html(memberList):
 24     print(type(memberList))  # <class 'list'>
 25     fout = open('result.html', 'w', encoding='utf-8')
 26     fout.write('<html>')
 27     fout.write('<meta charset=utf-8')
 28     fout.write('<body>')
 29     fout.write('<table>')
 30 
 31     # Python 默認編碼格式是: Ascii
 32     for data in memberList:              # result=list,data={}
 33         fout.write('<tr>')
 34         fout.write('<hr>')
 35         fout.write('<td>%s</td>' % data['UserName'])
 36         fout.write('<td>%s</td>' % data['Sex'])
 37         fout.write('<hr>')
 38         fout.write('</tr>')
 39         fout.write('</table>')
 40         fout.write('</body>')
 41         fout.write('</html>')
 42     fout.close()
 43 
 44 # 保存為csv文件
 45 def output_csv(datalist):
 46     print(type(datalist))  # <class 'list'>
 47     import csv
 48     # 准備好存儲數據的csv文件
 49     csv_file = open("result.csv", 'w', newline='', encoding='utf-8-sig')  # 解決中文亂碼問題
 50     writer = csv.writer(csv_file)
 51     writer.writerow(['列標題一', '列標題二', '列標題三'])
 52     for data in datalist:
 53         writer.writerow([data['UserName'], data['Sex'],data['Age']])
 54     csv_file.close()
 55 
 56     #用reder讀取csv文件
 57     with open('result.csv','r') as csvFile:
 58         reader = csv.reader(csvFile)
 59         for line in reader:
 60                   print(line)
 61 
 62 # 保存為xls文件
 63 def output_xls(datalist):
 64     print(type(datalist))  # <class 'list'> 
 65     import xlwt
 66     # #創建工作簿
 67     workbook = xlwt.Workbook(encoding='utf-8')
 68     # 創建sheet
 69     sheet = workbook.add_sheet(u'sheet1',cell_overwrite_ok=True)
 70     head = ['名字', '性別', '年齡']  # 定義表頭
 71     # worksheet.write()函數寫入第一行列名,參數分別表示行、列、數據、數據格式。
 72     for h in range(len(head)):
 73         sheet.write(0, h, head[h])  # 生成第0行標題
 74 
 75     # 填入數據(第1行0列開始填數)
 76     row = 1
 77     for product in datalist:        # 列表里面存了字典
 78         sheet.write(row , 0, product['UserName'])
 79         sheet.write(row , 1, product['Sex'])
 80         sheet.write(row , 2, product['Age'])
 81         row += 1
 82     workbook.save('result.xls')
 83 
 84     # 讀取excel數據
 85     import xlrd
 86     data = xlrd.open_workbook('result.xls') # 打開xls文件
 87     table = data.sheets()[0] # 打開第一張表
 88     nrows = table.nrows      # 獲取表的行數
 89     for i in range(nrows):   # 循環逐行打印
 90         if i == 0: # 跳過第一行
 91             continue
 92         print(table.row_values(i))
 93 
 94 
 95 # 示例調用
 96 if __name__ == '__main__':
 97 
 98     #  memberList是一個列表,里面嵌入字典
 99     output_html(memberList)
100     output_csv(memberList)
101     output_xls(memberList)
102 
103     for result in memberList:
104         #print('篩選后的最終數據為:',result)
105         output_txt(result)           # 生成器對象一遍歷出來就是字典。

生成的各類文件數據:

 

 

 

 提醒!!! 以后在讀寫txt文件時,都使用with open語句,不要再像以前那樣用f = open()這種語句了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM