标题: [求助]如果将文件中相同的部分替换掉?
[打印本页]
作者: honghunter
时间: 2007-12-5 14:27
标题: [求助]如果将文件中相同的部分替换掉?
我要处理的文件内容如下,
希望能将其中每行上面相同的部分替换成“,”,从而生成一个csv文件。
上海华泾新村二手房出售(地址:徐汇区华泾路880弄1楼)详情####房产编号: F52532828##省 市: 上海 物业名称: 华泾新村##所在区县: 徐汇 物业地址: 徐汇区华泾路880弄1楼##房 型: 2室1厅1卫 房 龄: 年##产权说明: 个人产权 业主报价: 55 万元/套##建筑面积: 57.2平方米 使用面积: 平方米##面积说明: ##房屋朝向: 南 所在楼层: 1层(共6层)##物业类型: 普通住宅 物业费用: 元/平方米·月##装修情况: 简装修##周边设施: ##交通说明: 770,718,714,804等##中介服务: ##看房时间: 提前联系##登记日期: 2007-12-3 有效期: 不限##备 注: 赠送维修基金,煤气等设备####>>>联系方式 ( 好年华上中西路店 )##联 系 人: 请恰值班人员##联系电话: 54816012 54816013##手机: ##QQ: ##email: ##
我现在的做法是人工分析出相同的部分,然后通过类似下面的批处理来完成替换:
fr data.txt -f:"##网上房地产-上海二手房:上海" -t:"##上海"
sleep 2s
fr data.txt -f:"出售详情####>>>" -t:","
sleep 2s
fr data.txt -f:"(出售)详情: 房产编号:" -t:","
sleep 2s
fr data.txt -f:"##省 市:" -t:","
sleep 2s
fr data.txt -f:"物业名称: " -t:","
sleep 2s
fr data.txt -f:"##所在区县:" -t:","
sleep 2s
fr data.txt -f:"物业地址:" -t:","
sleep 2s
作者: honghunter
时间: 2007-12-5 14:29
我的期望是能自动识别出每行中相同的部分,比如我上面写到的“出售详情####>>>”、"(出售)详情: 房产编号:"等等。
作者: honghunter
时间: 2007-12-5 14:30
不一定费用批处理完成,主要探讨识别的思路。
主要的困难就是长度和位置的不固定。
作者: honghunter
时间: 2007-12-5 15:59
说一下背景。
我从\fangduo.com下载房屋的详情网页,转成TXT,得到:
上海华泾新村二手房出售(地址:徐汇区华泾路880弄1楼)详情
房产编号: F52532828
省 市: 上海 物业名称: 华泾新村
所在区县: 徐汇 物业地址: 徐汇区华泾路880弄1楼
房 型: 2室1厅1卫 房 龄: 年
产权说明: 个人产权 业主报价: 55 万元/套
建筑面积: 57.2平方米 使用面积: 平方米
面积说明:
房屋朝向: 南 所在楼层: 1层(共6层)
物业类型: 普通住宅 物业费用: 元/平方米·月
装修情况: 简装修
周边设施:
交通说明: 770,718,714,804等
中介服务:
看房时间: 提前联系
登记日期: 2007-12-3 有效期: 不限
备 注: 赠送维修基金,煤气等设备
>>>联系方式 ( 好年华上中西路店 )
联 系 人: 请恰值班人员
联系电话: 54816012 54816013
手机:
QQ:
email:
然后希望能提取其中各项信息来生成CSV文件。
目前的做法是我先把它转成一个长字符串,手工整理出其中重复的部分。然后进行替换。比如
fr data.txt -f:"出售详情####>>>" -t:","
最后得到CSV文件。
现在就是觉得这样的手工整理其中重复的部分是在太累了,研究用怎么样的思路可以写小程序来达到自动分析和提取的效果。
作者: lxmxn
时间: 2007-12-5 16:43
看了半天,看得一头雾水,到底要达到什么样的要求?你所说的“重复”是什么意思?
最好举例说明源文件的格式,然后说明希望得到的文件格式。
另外,fr 是你自己做的脚本么?
作者: huahua0919
时间: 2007-12-5 19:00
雾水中.....
作者: honghunter
时间: 2007-12-5 23:01
Quote: |
Originally posted by lxmxn at 2007-12-5 04:43 PM:
看了半天,看得一头雾水,到底要达到什么样的要求?你所说的“重复”是什么意思?
最好举例说明源文件的格式,然后说明希望得到的文件格式。
另外,fr 是你自己做的脚本么? |
|
不好意思,可能没说明白,我重新说一下:
我现在得到的数据每行都想1楼那样,类似下面这样:
##上海金榜三期二手房出售(地址:沧源路770弄)详情####房产编号: ##省 市: 上海 物业名称: 金榜三期##所在区县: 闵行 物业地址: 沧源路770弄……
##上海林梅新村二手房出售(地址:三林路788弄)详情####房产编号: 64##省 市: 上海 物业名称: 林梅新村##所在区县: 浦东 物业地址: 三林路788弄……
##上海平南一村二手房出售(地址:平南一村)详情####房产编号: F52836384##省 市: 上海 物业名称: 平南一村##所在区县: 闵行 物业地址: 平南一村……
上面这是3行。
我现在想要做的
1,就是想出一个思路来识别出其中每行重复的内容,也就是首先要能识别出其中的下列信息是重复的(只是“ (*)”部分不同)
##上海(*)二手房出售(地址:(*))详情####房产编号: (*)##省 市: (*) 物业名称: (*)##所在区县: (*) 物业地址: (*)……
2,第二步就是把识别出来的这些重复(相同)的部分,在替换成“,”,把数据文件变成CSV格式文件,以便后续的进一步处理。
作者: honghunter
时间: 2007-12-5 23:05
附件是待处理的样本数据。
附件
1:
data.rar (2007-12-5 23:05, 67.06 K,下载次数: 4)
作者: honghunter
时间: 2007-12-5 23:13
fr是一个用来查找替换的小工具。
===============================================================================
find and replace Ver 2.0.3.624 by BaiYang / 2004 - 2006, Freeware
===============================================================================
Find string in files or pipe, and replace it to another string
USAGE: fr [filePattern1 filePattern2 ...] {FindOption:StringToFind}
{ReplaceOption:StringToReplacement} [OtherOptions]
附件是希望的处理后的情况
附件
1:
data.rar (2007-12-5 23:13, 61.43 K,下载次数: 4)
作者: everest79
时间: 2007-12-5 23:22
MS_office 中有专门解决这个的方案
设定execl的源位置为那个网站,剩下的记不清了,采集到后你想存什么格式都行
作者: honghunter
时间: 2007-12-5 23:55
Quote: |
Originally posted by everest79 at 2007-12-5 11:22 PM:
MS_office 中有专门解决这个的方案
设定execl的源位置为那个网站,剩下的记不清了,采集到后你想存什么格式都行 |
|
前面给大家看的待处理的数据,是抓几个网页组合出来的。
我对excel了解有限,但是设置源位置的方式,我好像只成功的抓到一个页面上的信息。
能否实现:按照类似下面链接指向页面作为列表,把几千条(需要翻页)信息的详情(每一条点开)提取成excel哪?
http://www.fangduo.com/sh/sellse ... p;zj2=80&sx=300
作者: zh159
时间: 2007-12-6 00:19
估计是要处理成这样:
Quote: |
金榜三期,沧源路770弄, ,,上海,金榜三期,闵行,沧源路770弄……
林梅新村,三林路788弄,64,上海,林梅新村,浦东,三林路788弄……
平南一村,平南一村,F52836384,上海,平南一村,闵行,平南一村…… |
|
作者: lxmxn
时间: 2007-12-6 01:02
重复的部分是不是固定格式的?
如果不是固定的,你的意思是不是要让程序来找到这些重复的部分,然后替换成(,)?
作者: junchen2
时间: 2007-12-6 01:08
awk "NF>0{sub(/省 市/,\",\");sub(/房 型:/,\",\");sub(/万元\/套/,\",\");sub(/备 注:/,\",\");sub(/房 龄:/,\",\");gsub (/元\/平方米·月/,\",\");gsub(/平方米/,\",\");sub(/>>>联系方式/,\",\");for(i =2;i<=NF;i++){if($i~/#+.*:/)gsub(/#+.*:/,\",\",$i);if($i~/#/)gsub(/#+/,\",\",$i);if($i~/:$/)gsub(/.*:$/,\",\",$i)};gsub(/[ ]+/,\"\");print $0}" dat.txt
上海金榜三期二手房出售(地址:沧源路770弄)详情####房产编号:,上海,金榜三期,闵行,沧
源路770弄,,2室1厅1卫,6年,产权,74,,81.34,,,,,南,1/6,多层住宅,,,豪华,银行,邮电局,
超市,医院,公园,学校,商场,菜场,,中介勿扰,提前联系,2007-12-3,不限,,,,(鼎族房产东川
店),联系,朱庆龙,13681834310,13681834310,464131674,
用gawk工具可能可以,写成这样,真怕挨打:P:P
下面是一个前辈搜集的工具。里面有gawk
http://www.vkill.net/tools.html
[
Last edited by junchen2 on 2007-12-6 at 01:37 AM ]
作者: everest79
时间: 2007-12-6 02:43
Quote: |
Originally posted by honghunter at 2007-12-5 11:55 PM:
前面给大家看的待处理的数据,是抓几个网页组合出来的。
我对excel了解有限,但是设置源位置的方式,我好像只成功的抓到一个页面上的信息 ... |
|
静态的html,你在导入任一页的WEB数据时只需要先将那个查询保存下来,本来就是文本格式,查询内容除了web地址有变化外其它是一样的,这样你可以通过脚本或宏来动态引用这个查询,并可以定义在每查询完毕后只按你规定的格式来保留相应表格的数据
作者: honghunter
时间: 2007-12-6 09:09
Quote: |
Originally posted by zh159 at 2007-12-6 12:19 AM:
估计是要处理成这样:
|
|
是的,希望处理成类似那样的格式。
作者: honghunter
时间: 2007-12-6 09:15
Quote: |
Originally posted by junchen2 at 2007-12-6 01:08 AM:
awk "NF>0{sub(/省 市/,\",\");sub(/房 型:/,\",\");sub(/万元\/套/,\",\");sub(/备 注:/,\",\");sub(/房 龄:/,\",\") ... |
|
谢谢,
只是你这个也是先识别出来之后,在写语句来实现替换得到最终格式的。
我现在的问题是如何自动的识别出来。比如识别出“省 市”是一个每行都重复的词。
作者: honghunter
时间: 2007-12-6 09:25
Quote: |
Originally posted by lxmxn at 2007-12-6 01:02 AM:
重复的部分是不是固定格式的?
如果不是固定的,你的意思是不是要让程序来找到这些重复的部分,然后替换成(,)? |
|
是的,就是想要让程序来找出这些重复的部分,比如找出“省 市”、“物业名称”……
作者: honghunter
时间: 2007-12-6 10:18
Quote: |
Originally posted by everest79 at 2007-12-6 02:43 AM:
静态的html,你在导入任一页的WEB数据时只需要先将那个查询保存下来,本来就是文本格式,查询内容除了web地址有变化外其它是一样的,这样你可以 ... |
|
查询结果是由部分信息,我需要的是全部信息,所以:
1,先抓取查询结果网页,
2,然后提取出其中的详细情况的URL列表,
3,依次下载每一个详细情况的网页,(每一个都类似
http://www.fangduo.com/listsell.asp?id=33664)
4,目前的问题点:怎么有效的提取每个详细情况网页中的这些信息?
作者: lxmxn
时间: 2007-12-6 19:21
Quote: |
Originally posted by honghunter at 2007-12-6 09:25:
是的,就是想要让程序来找出这些重复的部分,比如找出“省 市”、“物业名称”…… |
|
你这样的要求有点像是人工智能哈。
看看下面被标记的部分,是不是也要剔除呢?如果也要剔除,那也好办了。
Quote: |
上海华泾新村二手房出售(地址:徐汇区华泾路880弄1楼)详情####房产编号: F52532828##省 市: 上海 物业名称: 华泾新村##所在区县: 徐汇 物业地址: 徐汇区华泾路880弄1楼##房 型: 2室1厅1卫 房 龄: 年##产权说明: 个人产权 业主报价: 55 万元/套##建筑面积: 57.2平方米 使用面积: 平方米##面积说明: ##房屋朝向: 南 所在楼层: 1层(共6层)##物业类型: 普通住宅 物业费用: 元/平方米·月##装修情况: 简装修##周边设施: ##交通说明: 770,718,714,804等##中介服务: ##看房时间: 提前联系##登记日期: 2007-12-3 有效期: 不限##备 注: 赠送维修基金,煤气等设备####>>>联系方式 ( 好年华上中西路店 )##联 系 人: 请恰值班人员##联系电话: 54816012 54816013##手机: ##QQ: ##email: ## |
|
作者: honghunter
时间: 2007-12-6 20:24
不是提出同一行中重复的部分,是要找出不同行中重复的部分。