文件操作-作業
阿新 • • 發佈:2018-06-08
對象 匹配 line ken readline 年齡 != 價格 類型
作業1,文件a.txt內容:每一行內容分別為商品名字,價格,個數
apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
通過代碼,將其構建成這種數據類型:
[{‘name‘:‘apple‘,‘price‘:10,‘amount‘:3},{‘name‘:‘tesla‘,‘price‘:1000000,‘amount‘:1}......] 並計算出總價錢。
‘‘‘ 實現方法: 循環句柄,控制循環次數,對item進行切割,形成列表, 在進行for循環添加字典 ‘‘‘ with open(‘a.txt‘, ‘r‘, encoding=‘utf-8‘) as f: li= [] for item in f: # item = apple 10 3 dic = {‘name‘: None, ‘price‘: None, ‘amount‘: None} lst = item.split() # lst = [‘apple‘, ‘10‘, ‘3‘] dic[‘name‘] = lst[0] dic[‘price‘] = lst[1] dic[‘amount‘] = lst[2] li.append(dic) print(li)
作業2,文件a1.txt內容:
name:apple price:10 amount:3 year:2012
name:tesla price:100000 amount:1 year:2013
......
通過代碼,將其構建成這種數據類型:
[{‘name‘: ‘apple‘, ‘price‘: ‘10‘, ‘amount‘: ‘3‘}, {‘name‘: ‘tesla‘, ‘price‘: ‘100000‘, ‘amount‘: ‘1‘}]
with open(‘e.txt‘, ‘r‘, encoding=‘utf-8‘) as f: lst = [] sum = 0 for item in f: dic= {} lst1 = item.split(‘ ‘) # [‘name:apple‘, ‘price:10‘, ‘amount:3‘, ‘year:2012\n‘] for el in lst1: # item = ‘name:apple‘ lst2 = el.split(‘:‘) # lst2 = [name, apple] if lst2[0] == ‘year‘: continue dic[lst2[0]] = lst2[1].strip() lst.append(dic) sum += int(dic[‘price‘])*int(dic[‘amount‘]) print(lst) print(sum)
作業3,文件a.1txt內容形式:
序號 部門 人數 平均年齡 備註
1 python 30
26 單身狗
2 Linux 26
30 沒對象
3 運營部 20
24 女生多
通過代碼,將其構建成這種數據類型:
[{‘序號‘:‘1‘,‘部門‘:Python,‘人數‘:30,‘平均年齡‘:26,‘備註‘:‘單身狗‘},
......]
with open(‘d.txt‘, ‘r‘, encoding=‘utf-8‘) as f: lst = f.readlines() lst1 = [] # 最後打印的列表 new = [] # key的列表 for item in lst[0].split(): # 將第一行的名稱添加到new列表裏面,之後for循環new列表元素組成字典的key if item != ‘ ‘: new.append(item) # print(new) # [‘序號‘, ‘部門‘, ‘人數‘, ‘平均年齡‘, ‘備註‘] # print(lst[1:]) index = 0 # 實現列表長度的循環 for item in lst[1:]: # n = [] dic = {} # 循環定義字典,添加到列表中 for el in item.split(‘ ‘): # el = [‘1‘, ...] if el != ‘‘: # n = [‘1‘, ‘python‘, ‘30‘, ‘26‘, ‘單身狗\n‘] # n.append(el) dic[new[index]] = el.strip() # 匹配索引位置以鍵值對的形式添加到列表中 index += 1 if index == len(new): index = 0 lst1.append(dic) print(lst1)
文件操作-作業