Re: [問題]處理CSV檔的問題
#-*- 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
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章