电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

实战篇丨CSV文件内容中的换行符等常见特殊字符处理过程记录

来源:金蝶云社区作者:金蝶2024-09-164

实战篇丨CSV文件内容中的换行符等常见特殊字符处理过程记录

因为导入CSV格式数据到hive的时候,会出现错行错列的现象,经过排查,主要原因是CSV文件内容中含有换行符(\r\n,\n,\r)和转义符(\)导致。


正常我们使用一下建表语句默认支持CSV文件解析(关键设置:ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde')


5.webp

如果出现类似如下数据则会出现数据错行错列现象:


6.webp


因为都是历史数据,源头(数据提供方)也不愿意修改,只能自己通过写相关小程序(小脚本)去预处理这些特殊情况,第一反应其实是直接使用linux的sed命令去处理,但是水平有限,作罢。


自己主要是写Java比较多,但是Java不方便在内网调试(内网数据不让拷贝出来,内网无开发环境),内网服务器正好有安装Python,那就试着用Python去写吧(也算是第一次真正写Python)


啰里啰嗦一大堆,上代码吧,写得不好还望各位指正。


#!/usr/bin/python3
 
# -*- coding:utf-8 -*-
 
 
 
#处理csv文件中换行符等特殊字符(\r\n,\n,\r,\\
 
#python handle_csv_newline_char.py filepath
 
 
import os
 
import sys
 
import csv
 
import codecs
 
import time
 
 
#需要处理的文件 来自参数1filepath
  filename = sys.argv[1]
 
  print(time.strftime(
"%Y-%m-%d %H:%M:%S", time.localtime()),'[', filename, ']开始处理')
 
 
with codecs.open(filename, 'r', encoding='utf-8') as srcFile, codecs.open(filename + '.tmp', 'w', encoding='utf-8') as dstFile:
        fileReader = csv.reader(srcFile, delimiter=
',', quotechar='"', escapechar='\\')
        fileWriter = csv.writer(dstFile, quoting=csv.QUOTE_ALL, lineterminator   =
'\n')
 
      for
d in list(fileReader):
          for
ii,dd in enumerate(d):
                if
dd.find('\r\n') != -1:
                    dd = dd.

实战篇丨CSV文件内容中的换行符等常见特殊字符处理过程记录

因为导入CSV格式数据到hive的时候,会出现错行错列的现象,经过排查,主要原因是CSV文件内容中含有换行符(\r\n,\n,\r)和转义符(\)导...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信