最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

csv文件容錯(cuò)處理方法

 更新時(shí)間:2019年07月22日 09:46:38   作者:安家  
這篇文章主要介紹了csv文件容錯(cuò)處理方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

如果數(shù)據(jù)庫有特殊字符(換行符,轉(zhuǎn)義符),會(huì)導(dǎo)致生成的csv無法正常導(dǎo)入。

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

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

處理成

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

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

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=,

總結(jié)

以上所述是小編給大家介紹的csv文件容錯(cuò)處理方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 用asp與php實(shí)現(xiàn)百度ping服務(wù)的代碼

    用asp與php實(shí)現(xiàn)百度ping服務(wù)的代碼

    分別用asp與php實(shí)現(xiàn)百度ping服務(wù)的代碼,需要的朋友可以參考下
    2012-02-02
  • Terraform集成簡(jiǎn)單Gitlab?CI方案詳解

    Terraform集成簡(jiǎn)單Gitlab?CI方案詳解

    這篇文章主要為大家介紹了Terraform?+?Gitlab?CI簡(jiǎn)單集成方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • DevOps,CI,CD,自動(dòng)化簡(jiǎn)述

    DevOps,CI,CD,自動(dòng)化簡(jiǎn)述

    這篇文章主要介紹了DevOps,CI,CD,自動(dòng)化簡(jiǎn)單介紹,通過本文給大家簡(jiǎn)單介紹DevOps,CI,CD,自動(dòng)化這四者的基本概念,需要的朋友可以參考下
    2021-07-07
  • chatgpt成功解決Access denied 1020錯(cuò)誤問題(最新推薦)

    chatgpt成功解決Access denied 1020錯(cuò)誤問題(最新推薦)

    從前兩天網(wǎng)上開始一直開著的chatgpt網(wǎng)頁突然打不開了,提示1020錯(cuò)誤,嘗試換了不同代理軟件或者代理地點(diǎn)仍然無法解決,這篇文章主要介紹了chatgpt成功解決Access denied 1020錯(cuò)誤,需要的朋友可以參考下
    2023-05-05
  • 教你免費(fèi)做一個(gè)屬于自己穩(wěn)定有效的圖床-PicGo

    教你免費(fèi)做一個(gè)屬于自己穩(wěn)定有效的圖床-PicGo

    由于現(xiàn)在很多寫作平臺(tái)都支持了Markdown語法,導(dǎo)致圖床用的人越來越多。這篇文章主要介紹了如何免費(fèi)做一個(gè)屬于自己穩(wěn)定有效的圖床-PicGo,需要的朋友可以參考下
    2020-01-01
  • ChatGPT將批量文檔翻譯成中文的方法

    ChatGPT將批量文檔翻譯成中文的方法

    文檔翻譯成中文軟件是指在處理文檔時(shí),自動(dòng)將文檔中的內(nèi)容翻譯成中文的軟件,本文就給大家介紹如何用ChatGPT將批量文檔翻譯成中文的方法,感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧
    2023-06-06
  • IE條件語句 IE hack大全

    IE條件語句 IE hack大全

    條件注釋只有在IE瀏覽器被支持,因此僅適用于IE的特殊指令。從IE5起都支持
    2012-05-05
  • 一文帶你快速梳理ChatGPT、GPT4 和OpenAPI的關(guān)系

    一文帶你快速梳理ChatGPT、GPT4 和OpenAPI的關(guān)系

    最近最火的幾個(gè)詞無疑是ChatGPT、GPT4 和OpenAPI,那么這三者究竟有什么關(guān)系呢,本文將帶你進(jìn)行快速梳理三者的關(guān)系,感興趣的同學(xué)可以參考閱讀下
    2023-06-06
  • VSCode遠(yuǎn)程XHR failed無法連接的問題及解決方案

    VSCode遠(yuǎn)程XHR failed無法連接的問題及解決方案

    VSCode進(jìn)行遠(yuǎn)程連接時(shí)會(huì)檢查服務(wù)端的Server運(yùn)行情況,如未運(yùn)行則需要下載安裝,在下載過程中可能需要訪問外網(wǎng),如果外網(wǎng)不通則連接過程失敗,解決方法是手動(dòng)下載離線安裝包,手動(dòng)解壓至指定的路徑即可,對(duì)VSCode遠(yuǎn)程無法連接問題感興趣的朋友一起看看吧
    2024-03-03
  • 淺析mmdetection在windows10系統(tǒng)環(huán)境中搭建過程

    淺析mmdetection在windows10系統(tǒng)環(huán)境中搭建過程

    這篇文章主要介紹了mmdetection在windows10系統(tǒng)環(huán)境中搭建過程,本文圖文并茂通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

图片| 哈尔滨市| 确山县| 穆棱市| 恩平市| 民县| 乌什县| 永定县| 南丰县| 钟山县| 万安县| 正宁县| 双峰县| 喜德县| 横峰县| 玉树县| 永嘉县| 台南县| 乐亭县| 宁蒗| 手游| 揭阳市| 岳阳市| 壤塘县| 高密市| 精河县| 汪清县| 甘孜县| 东山县| 德庆县| 始兴县| 北海市| 石屏县| 理塘县| 毕节市| 隆子县| 永新县| 大庆市| 崇信县| 高要市| 白沙|