Re: [問題]處理CSV檔的問題

看板Python作者 (DW)時間14年前 (2011/09/24 11:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
#-*- coding: UTF-8 -*- import csv import string import commands import os,sys,math import shutil t="/home/ray/workspace/itri/src/a/" fname1='test.csv' gname1='test2.csv' f=open(t+fname1,"r") g=open(t+gname1,"w") temp = f.readlines() for r in temp: tmp = r tmpline=tmp.replace('<b><font color=”#333366”>','') newline=tmpline.replace('<br /><br />',' "," ') #row=newline.split(',') #if r==temp[0]: #new_row=newline+','+"row" #else: #new_row=newline+','+row g.write(newline) f.closeg.close 我是直接把它當作txt檔處理 沒有用CSV Module 因為CSV的只有複寫跟append上去感覺直接用replace比較方便 現在下面的資料欄位已經可以分隔開不會有一個欄位有多值的問題 但是還是有兩個問題 1.把機構名稱還有負責人姓名提出來 還是有問題因為找不到一定 相對應的符號...... 2.有些欄位裡有負責人姓名有些沒有 所以用,"分出來後,還是有些因空白值 而對錯欄位目前正在研究re來處理 希望各位大大能夠幫忙~~~感激 ※ 引述《KSJ (阿真)》之銘言: : ※ 引述《tt812 (DW)》之銘言: : : 我現在有一個CSV檔是從網路上面抓下來的 : : 因原本欄位不夠多所以要增加欄位, : : 所以用input output 的方法 : : 其中因爲第三欄的資料要跟據表頭再分出不同欄 : : 大概是這樣: : : stitle,xpostDate,xbody,xcreatedDate,xAddress, : : "台北市私立寶貝托兒所","2010/8/3 上午 11:48:00","<b><font color=”#333366”>機構 : : 名稱:台北市私立寶貝托兒所</font></b><br /><br />負責人姓名:林秀娟<br /><br />聯 : : 絡人姓名:林秀娟<br /><br />電話:2305-1623<br /><br />立案字號:北市社五(立 : : )676<br /><br />立案日期:0870817<br /><br />核定收托人數:31<br /><br />托收對象: : : 托收對象年齡0-2歲0人; 2-6歲31人; 6-12歲0人<br /><br />是否備有交通車:無<br : : /><br />地址:臺北市100寧波西街181巷44號1樓<br /><br /><a href=” : : http://www.dosw.taipei.gov.tw/a/a0104.asp” target=”_blank”>婦女福利及兒童托育 : : 科</a><br />","2011/9/16 上午 01:46:00","臺北市寧波西街181巷44號1樓 : : ","121.509605407715","25.026424407959" : : 希望可以把機?名稱,負責人姓名,聯絡人姓名,電話,立案字號等各獨立出一欄 : : 目前思考方向是用,取代:然後表頭append上去但不得其門而入,希望各位大大幫忙 : 資料不多的話 提供一個笨方式 : 因為有中文 要用unicode 我是用python2.5.4 在idle下 有些decode小問題 : 觀念比較重要 : 首先發現 ":" 是個不錯的分段點 通常在":"之後就是資料 : 資料的結尾大部份是"<ooxx//>" 之類的東西 : 所以寫一個笨的parser : def findcontent(ustr,hstr,tstr): : '''找出hstr與tstr之間的內容''' : h_index = ustr.index(hstr) #找到此字串的index : start = h_index + len(hstr) #內容物的起始index : t_index = ustr.index(tstr,start) #從start後開始找 : end = t_index : return ustr[start:end] : 來回傳結果 : 假設第三欄的資料叫 third_str : 比方你要找 機構名稱 : 就用 findcontent(third_str.decode("cp950"), : "機構名稱:".decode("cp950"), : "</font>".decode("cp950")) : "機構名稱:".decode("cp950") 是在idle下用的 : 一般來說 寫 u"機構名稱:" 就行了 : 要找 負責人姓名 : 就用 findcontent(third_str.decode("cp950"), : "負責人姓名:".decode("cp950"), : "<br />".decode("cp950")) : 以此類推 應該就行了 : 有錯請指正 有更好的方法也請與大家分享~ : 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.156.171
文章代碼(AID): #1EVKzldy (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1EVKzldy (Python)