作者tt812 (DW)
看板Python
标题Re: [问题]处理CSV档的问题
时间Sat Sep 24 11:33:00 2011
#-*- 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