数据如下图: 用python对数据进行处理: #读取csv文件内容并进行数据处理import osimport csvimport datetimeimport refrom itertools import islicecsv_file_path = ‘query_hive.csv‘ #文件路径write2_csv_file_path = ‘
数据如下图:
用python对数据进行处理:
#读取csv文件内容并进行数据处理 import os import csv import datetime import re from itertools import islice csv_file_path = ‘query_hive.csv‘ #文件路径 write2_csv_file_path = ‘hive_result2.csv‘ #处理第二列数据 write6_csv_file_path = ‘hive_result6.csv‘ #处理第六列数据 #定义一个写入数据函数 def write_csv_file(): if os.path.exists(csv_file_path) is False : print("不存在文件鸭!") return with open(csv_file_path,‘r‘) as r_file: #读取csv文件内的所有内容 file_read = csv.reader(r_file) for row in islice(file_read,1,None): #如果第一行是列名,用islice函数直接跳过第一行 islice(文件名,跳过的行数,None) print(row) #处理第六列数据 row6 = row[5] #第六列数据 len_str6 = len(row6) #第六列数据的长度 print("此列字符串的长度:{}".format(len_str6)) L_str6 = list(row6[1:len_str6-1].split(‘|‘)) #对第六列数据进行分割得到数字字符串列表 print("此列得到数字字符串列表:{}".format(L_str6)) L_num6 = list() #创建一个空列表存储数据 for s in L_str6: #将字符串列表变为数字型列表 if s==‘‘ : L_num6.append(0) else: L_num6.append(int(s)) print("此列得到数字型数据列表{}".format(L_num6)) #处理第一列数据 row2 = row[1] #第一列数据 len_str2 = len(row2) #第一列数据的长度 print("此列数据串的长度".format(len_str2)) L_str2 = list(re.split("[/.]",row2[1:])) #用多个分隔符分割字符串 print("此列得到字符串列表{}".format(L_str2)) #写入2数据 csv_write_list = [L_str2] #用于写入文件的数据 with open(write2_csv_file_path,‘a‘,newline=‘‘) as w_file: #若没有newline=‘‘每读入一行数据后跟一个空行 writer = csv.writer(w_file,dialect=‘excel‘) for row_item in csv_write_list: writer.writerow(row_item) #写入6数据 csv_write_list = [L_str6] with open(write6_csv_file_path,‘a‘,newline=‘‘) as w_file: #若没有newline=‘‘每读入一行数据后跟一个空行 writer = csv.writer(w_file,dialect=‘excel‘) for row_item in csv_write_list: writer.writerow(row_item) if __name__ == "__main__": write_csv_file() #注意 ‘‘‘ 1)写入文件数据的时候,只能以字符串的格式写入! 2)L_str 是处理之后的字符串列表,若要将其写入文件中,还需要进一步操作:将其作为新列表的一个元素进行读入 暨csv_write_list = [L_str6] 3)如果打开待写入文件时没有参数 newline=‘‘ ,那么最后的文件中每一数据行后都有一个空行 4)如果数据文件第一行是列名,用islice函数直接跳过第一行 islice(文件名,跳过的行数,None) ‘‘‘