python对csv文件中的数据进行分类_python 数据处理 对csv文件进行数据处理

数据如下图:

1140331-20191018000910662-115515789.png

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

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值