好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > csv文件容錯處理方法

csv文件容錯處理方法

熱門標簽:高德地圖標注公司位置需要錢嗎 慶陽外呼系統定制開發 襄陽外呼增值業務線路解決方案 合肥阿里辦理400電話號 海南人工外呼系統哪家好 廊坊地圖標注申請入口 怎么去掉地圖標注文字 北京外呼系統咨詢電話 地圖標注資源分享注冊

如果數據庫有特殊字符(換行符,轉義符),會導致生成的csv無法正常導入。

val1,val2,val3
aa,bb,cc
a
a,bb,cc
aa
,bb,cc
aa,
bb,cc
a\a,bb,cc

第一行header和第二行數據正常。
第三行第一個列有換行符,此時導致第四行看著正常(3列),但是數據又是錯誤的。
第五行跟第三行類似
第七行實際是第二個單元格首字符換行,導致第八行缺失一列。
第九行有轉義符

處理成

val1,val2,val3
aa,bb,cc
aa,bb,cc
aa,bb,cc
aa,bb,cc
aa,bb,cc

利用空閑時間,用python寫了個修補工具,原理是利用,csv是從上往下讀的,如果前一行列數不夠,一定可以從后一列補上。但是可能存在補完后超過指定列(比如列內包含分隔符,導致數據庫3列,變成4列),所以需要對其切片,只保留指定列數。

clean_csv.py

# -*- coding: utf-8 -*-
# Author AnJia(anjia0532@gmail.com https://anjia0532.github.io)
import argparse
import sys, os
import io
reload(sys)
sys.setdefaultencoding('utf8')
black_dict={"\\":"","\"":""}
def main():
  parser = argparse.ArgumentParser()
  parser.add_argument('--cols', type=int, dest='cols', action='store', default=-1,help="count of columns,default first line's cells")
  parser.add_argument('--src', type=str, dest='src', action='store', default='',
            help='path to source csv file')
  parser.add_argument('--dest', type=str, dest='dest', action='store', default='',
            help='path to dest csv file')
  parser.add_argument('--encoding', type=str, dest='encoding', action='store', default='utf-8',
            help='file encoding,default utf-8')
  parser.add_argument('--chunksize', type=int, dest='chunksize', action='store', default='10000',
            help='batch lines to write dest file,default 10000')
  parser.add_argument('--delimiter', type=str, dest='delimiter', action='store', default=',',
            help='csv delimiter,default ,')
  args = parser.parse_args()
  cols = args.cols
  src = args.src
  dest = args.dest
  encoding = args.encoding
  chunksize = args.chunksize
  delimiter = args.delimiter
  if not (src and dest) or chunksize = 0:
   print("invaild args!") 
   sys.exit(-1)
  olds=[]
  lines=[]
  with io.open(src,encoding=encoding) as fp:
   for line in fp.readlines():
    line = line.strip()
    for k,v in black_dict.items():
     if k in line:
      line=line.replace(k,v)
    cells = line.split(delimiter)
    if cols == -1:
     cols=len(cells)
    if(len(cells)  cols or (len(olds)>0 and len(olds)  cols)):
     if not olds:
      olds = cells
     else:
      cells[0]=olds[-1]+cells[0]
      olds.pop()
      olds.extend(cells)
    if len(olds) >= cols:
     cells=olds
     olds=[]
    if not olds:
     lines.append(delimiter.join(cells[0:cols])+"\n")
    if len(lines) % chunksize == 0:
     write_to_file(dest=dest,lines=lines)
     lines=[]
   write_to_file(dest=dest,lines=lines)
def write_to_file(dest,lines=[],encoding='utf-8'):
 p = os.path.split(dest)[0]
 if not os.path.exists(p):
  os.makedirs(p)
 with io.open(file=dest,mode="a+",encoding=encoding) as fp:
  fp.writelines(lines)
if __name__ == '__main__':
  main()

使用方式

python clean_csv.py --src=src.csv --dest=dest.csv --chunksize=50000 --cols --encoding=utf-8 --delimiter=,

總結

以上所述是小編給大家介紹的csv文件容錯處理方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • 解決Python中pandas讀取*.csv文件出現編碼問題
  • python 讀取.csv文件數據到數組(矩陣)的實例講解
  • python的pandas工具包,保存.csv文件時不要表頭的實例
  • PHP 實現從數據庫導出到.csv文件方法

標簽:綿陽 鎮江 平頂山 哈密 鶴崗 臺州 株洲 商丘

巨人網絡通訊聲明:本文標題《csv文件容錯處理方法》,本文關鍵詞  csv,文件,容錯,處理,方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《csv文件容錯處理方法》相關的同類信息!
  • 本頁收集關于csv文件容錯處理方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 久久综合九色综合狠狠97| 99热首页| 非会员体验区试看60秒| linode日本成熟iphone69| 我和香蕉在ktv| 麻麻穿开裆裤让我cao她漫画版| 99国产精品99久久久久久 | 国一国二国三国免费版| 黄 色 成 人 影 片| 国产亚洲日韩a在线欧美尤物| 优优人体大胆啪啪私拍| 果冻传媒在线完整免费播放| 天堂免费| 国产国语老龄妇女A片| a级在线看| 91精品啪在线观看国产色| 脔到她哭h粗话H好爽小黄鸭| 日本hdxxxxx护士免费的| 啊灬啊灬啊灬快灬高潮了女学生| 老师久久精品人人爽人人爽澡 | 一级做A爱高潮免费视频| 色黄网站青青草原免费| 99国产精品热久久久久久夜夜嗨| 日本高清色WWW在线观看视频| **实干一级毛片aa免费| acg邪恶全彩邪恶帝绅士库| 亚洲欧美视频| 国产91沙发系列瑜伽 | 大肥女BBwBBwBBw肥妇| 嗯~啊~用力~高H~纯肉~男男 卡通 自拍 亚洲 另类 | 欧美13一14娇小xxxx| 日本中文字幕一区二区三区| 好爽?要高潮了?深点快陈澄视频| 黃色A片三級三級三級免费看欲兔| 美国黑人特大一级毛片| 宝贝腿腿抬高一点| 粗暴顶撞哭喊玩弄强H| 精品无码国产一区二区三区5安| h文小说爽文辣文黄文| 女生逼照片| 国精产品一二三四线对比评测|