事情缘起于同事整理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()方法时,发现他对文本中数字的读取并不能很好的处理 两位数。
因此直接对目的进行转换,并且重新输出,这样对我来说逻辑可能更清晰一点。