數據如下圖:

用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)
'''
