作者KSJ (阿真)
看板Python
标题Re: [问题]处理CSV档的问题
时间Fri Sep 23 14:04:20 2011
※ 引述《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: 140.112.63.249
1F:推 tt812:看不懂........不好意思我是新手可以再说详细点吗 09/23 15:19
2F:→ KSJ:你分析档案的原始码贴上来我帮你修一修吧 09/23 15:32
3F:推 tt812:晚一点好吗我还在整理...谢谢ㄛ 09/23 16:49