幫別人處理資料
阿新 • • 發佈:2018-11-14
mport csv import fileinput #輸入需要列印的字串索引 inputs_keys=[] ################## results=[] dicts={} filename_csv=r'C:Users\zy\Desktop\TADPOLE_D1_D2_Dict.csv' file_list=r'C:Users\zy\Desktop\file_list.txt' with open(file_list) as f: content=f.readlines() for i in content: line=i.split(',')[0] inputs_keys.append(line) print(len(inputs_keys)) with open(filename_csv,encoding='utf-8') as f: reader_1=csv.reader(f) rows_keys=[row[1] for row in reader_1] with open(filename_csv,encoding='utf-8') as f: reader_2=csv.reader(f) rows_values=[row[5] for row in reader_2] for i in range(len(rows_keys)): dicts[rows_keys[i]]=rows_values[i] for key in inputs_keys: results.append(dicts[key]) #列印結果 print(results,len(results))
千萬記住,用python讀取.txt檔案,一定要用文字閱讀器,去改變.txt裡面的內容,不能用wps去改變,兩者格式是不相容的實際上在wps裡面是一行一行的,但是在文字閱讀器裡面,它是亂七八糟的,所以用;
with open(filename) as f:
content=f.readlines()
開啟的時候,就會出現不一樣的結果。
程式碼的改進版,程式碼結構更加清晰,程式碼的答應結果,更加明瞭。
import csv #=======================# '''tasks: 1).讀取.txt檔案中的資料,並形成一個有效檔名索引的列表; 用到了f.readelines這個函式,這個函式按行讀取.txt的內容,而且每一 行作為一個元素,構成一個新的列表,要注意的是,每個元素的末尾會 多一個額外的’\n‘ 換行符,所以要用迴圈的方法,取出換行符前面的有效 索引所(filename.split(',')) 2).按行讀取csv檔案,用到列表迴圈的方法:[row[index] for row in reader] 3).構成一個字典,給字典新增新元素和給列表新增新元素有很大的區別, dicts['filename'] = 'str or num'如果字典沒有這個鍵值對,就會自動新增,不像列 表,用.qppend(filename)新增。 ''' #=======================# inputs_keys=[ ] results=[ ] dicts={ } filename_csv=r'C:Users\zy\Desktop\TADPOLE_D1_D2_Dict.csv' file_list=r'C:\Users\zy\Desktop\file_list.txt' with open(file_list) as f: contents=f.readlines() for filename in contents: filename=filename.split(',')[0] inputs_keys.append(filename) # for filename in inputs_keys: # print(filename) with open(filename_csv) as f: reader=csv.reader(f) column_1=[row[1] for row in reader] with open(filename_csv) as f: reader=csv.reader(f) column_5=[row[5] for row in reader] #make a dicts for index in range(len(column_1)): dicts[column_1[index]]=column_5[index] for key in inputs_keys: print(key+' ==>',dicts[key])