#!/usr/bin/env python
# coding: utf-8
from Utils import Link, Logger
import re
import jieba
import jieba.posseg as pseg
jieba.load_userdict('dict/baidu.dict')
jieba.load_userdict('dict/sougou.dict')
class TextParser:
@staticmethod
def _jushi(text):
def _norm(word):
word_map = {
u'1':u'一', u'2':u'二', u'3':u'三', u'4':u'四', u'5':u'五',\
u'6':u'六', u'7':u'七', u'8':u'八', u'9':u'九', u'0':u'零',\
u'两':u'二'
}
if word_map.has_key(word):
return word_map[word]
else:
return word
core = ur'([0-9一二两三四五六七八九])室([0-9一二两三四五六七八九])厅|([0-9一二两三四五六七八九])居[室]{0,1}'
p = re.compile(core, re.UNICODE)
matches = p.findall(text)
jushi = {}
for i, j, k in matches:
i = _norm(i)
j = _norm(j)
k = _norm(k)
if i and j:
if jushi.has_key(i):
if j not in jushi[i]:
jushi[i].add(j)
else:
jushi[i] = set(j)
if k:
if not jushi.has_key(k):
jushi[k] = set()
ret = []
for i in jushi:
if jushi[i]:
for j in jushi[i]:
ret.append(u'%s室%s厅' % (i, j))
else:
ret.append(u'%s居室' % (i))
if ret: return u','.join(ret)
else: return u''
@staticmethod
def _shouji(text):
core = ur'(1[3|4|5|8]\d{9})|(1[3|4|5|8]\d[\- ]\d{3}[\- ]\d{5})|(1[3|4|5|8]\d[\- ]\d{4}[\- ]\d{4})'
p = re.compile(core, re.UNICODE)
matches = p.findall(text)
ret = set()
for i in matches:
for j in i:
if j:
ret.add(re.sub(ur'\D', u'', j))
if ret: return u','.join(ret)
else: return u''
@staticmethod
def _zujin(text):
core = ur'(\d{3,4}[元]?[/每]?月)|((价格|租金)\D?\d{3,4}\D)'
p = re.compile(core, re.UNICODE)
matches = p.findall(text)
ret = set()
for i in matches:
for j in i:
j = re.sub(ur'\D', u'', j)
if j:
ret.add(int(j))
if len(ret) == 1:
return u'%d元' % (ret.pop())
elif len(ret) > 1:
return u'%d-%d元' % (min(ret), max(ret))
else: return u''
@staticmethod
def _dizhi(text):
def find_place(text):
ret = set()
segs = pseg.cut(text)
for i, seg in enumerate(segs):
if seg.flag in ['bd', 'sg']:
ret.add(seg.word)
return ret
"""
core = ur'[0-9a-zA-Z\u4E00-\u9FA5]{2,}'
p = re.compile(core, re.UNICODE)
matches = p.findall(text)
text = u''.join([ i for i in matches if len(i)>3])
ret = set()
for i in matches:
if i:
place = find_place(i)
if place:
ret.add(place)
return u'||'.join([ i for i in ret])
"""
return u','.join(find_place(text))
@staticmethod
def _ditie(text):
def _norm(word):
word_map = {
u'一':u'1', u'二':u'2', u'三':u'3', u'四':u'4', u'五':u'5',\
u'六':u'6', u'七':u'7', u'八':u'8', u'九':u'9', u'十':u'10',\
u'十一':u'11', u'十二':u'12', u'十三':u'13', u'十四':u'14', u'十五':u'15',
}
if word_map.has_key(word):
return word_map[word]
else:
return word
core = ur'(1|2|4|5|6|8|9|10|13|14|15|一|二|四|五|六|八|九|十|十三|十四|十五|十五)号线|(八通|昌平|亦庄|房山|机场)线'
p = re.compile(core, re.UNICODE)
matches = p.findall(text)
ret = set()
for i, k in matches:
if i: ret.add(u'%s号线' % _norm(i))
if k: ret.add(u'%s线' % k)
if ret: return u','.join(ret)
else: return u''
@staticmethod
def parse(text):
unicode_string = text.decode('utf-8')
return {
'jushi': TextParser._jushi(unicode_string).encode('utf-8'),
'shouji': TextParser._shouji(unicode_string).encode('utf-8'),
'zujin': TextParser._zujin(unicode_string).encode('utf-8'),
'dizhi': TextParser._dizhi(unicode_string).encode('utf-8'),
'ditie': TextParser._ditie(unicode_string).encode('utf-8'),
}
@staticmethod
def _parse_shuimu(text):
pass
@staticmethod
def _parse_ganji(text):
pass
@staticmethod
def _parse_soufun(text):
pass
@staticmethod
def _parse_58(text):
pass
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Douban rental data search engine(豆瓣租房搜索引擎) (103个子文件)
common.dict.3500 14KB
nginx.conf 697B
bootstrap.css 129KB
bootstrap.min.css 107KB
bootstrap-theme.css 21KB
bootstrap-theme.min.css 18KB
app.css 323B
dependencies 133B
baidu.dict 540KB
sougou.dict 395KB
common.dict 10KB
glyphicons-halflings-regular.eot 20KB
zhaoxinwo-web.gif 4.58MB
zhaoxinwo-android.gif 1.63MB
index.html 4KB
500.html 4KB
404.html 4KB
search.html 3KB
donate.html 2KB
home.html 1020B
empty.html 953B
error.html 947B
statistic.html 310B
favicon.ico 1KB
imgdir 20B
uwsgi.ini 171B
qr.jpg 51KB
screenshot2.jpg 28KB
logo.jpg 18KB
screenshot1.jpg 12KB
jquery-2.0.3.min.js 82KB
bootstrap.js 59KB
bootstrap.min.js 31KB
jquery.dotdotdot.min.js 6KB
controllers.js 2KB
app.js 1KB
services.js 462B
bootstrap.css.map 216KB
jquery-2.0.3.min.map 124KB
bootstrap-theme.css.map 23KB
screenshot.png 155KB
logo.png 13KB
alipay.png 8KB
logo-sm.png 8KB
logo-pink.png 8KB
invalid_image.png 2KB
default_image.png 2KB
TextParser.py 5KB
PageParser.py 3KB
Browser.py 3KB
main.py 3KB
views.py 3KB
Utils.py 3KB
sim.py 3KB
main.py 3KB
PageParser.py 2KB
settings.py 2KB
main.py 2KB
MultiTasker.py 2KB
main.py 2KB
main.py 2KB
LinkSpider.py 1KB
models.py 849B
ContentExtractor.py 843B
HouseRefinery.py 731B
PageSpider.py 557B
urls.py 512B
wsgi.py 379B
urls.py 330B
manage.py 245B
admin.py 78B
tests.py 75B
__init__.py 0B
__init__.py 0B
Utils.py2 3KB
LinkSpider.py2 1KB
README 306B
README 107B
README 81B
README 46B
requirements 161B
requirements 96B
run 2KB
run 472B
run 415B
run 334B
run 95B
run2 961B
testawk.sh 7KB
manage.sh 4KB
adapter.sh 2KB
run.sh 2KB
wget_img.sh 1KB
make_final.sh 1KB
filter_data.sh 894B
random_extraction.sh 860B
filter_img.sh 287B
run_server.sh 61B
run_server.sh 43B
glyphicons-halflings-regular.svg 61KB
共 103 条
- 1
- 2
资源评论
博士僧小星
- 粉丝: 1924
- 资源: 5885
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功