事情緣起於同事整理excel,需要批量的對某一列的內容進行替換。
舉例:
數據格式:以下為一列內容,每行都在一個單元格中,目的是將數字替換為制定的中文字符。
1,2,31
,4,33
,21,,
對於處理辦法思前想后,覺得用shell可以搞定,但是可能相對麻煩,
用數據庫的話,由於數據在一個單元格,實現起來效率太低。
最后,感覺這剛好屬於python3.5中對字典的應用,遂寫了一段腳本去實現,具體腳本如下:
1、首先將需要處理的一列粘貼出,並將逗號批量替換為空格,以便能夠進行列表(list)的轉換
#######################################################
#encoding: utf-8
a_dict = {1:'你好',2:'我好',3:'大家好'}
input_file = open(r'C:\Users\xxxx\Desktop\shuju\shuju.txt','r') #read源文件
output_file = open(r'C:\Users\xxxx\Desktop\shuju\result.txt','a+') #追加寫入結果文件
line = input_file.readline()
while line: #逐行讀取源文件
a = line.split() #每一行轉換為一個列表-list
res = [] #建立結果列表
for item in a:
res.append(a_dict[int(item)]) #將結果寫入結果列表
output_file.write(str(res)+ '\n') #將結果列表追加寫入結果文件
line = input_file.readline()
input_file.close() #關閉文件
output_file.close()
###########################################################################
其實這並不是真正意義上的替換,並沒有用replace()方法
因為我試用replace()方法時,發現他對文本中數字的讀取並不能很好的處理 兩位數。
因此直接對目的進行轉換,並且重新輸出,這樣對我來說邏輯可能更清晰一點。