关闭

python练习:疾病专家信息获取工具

标签: python界面utf-8csv
262人阅读 评论(0) 收藏 举报
分类:
  • 做界面如下,编辑信号/槽拉确定到空白,选定accept()

这里写图片描述

  • 存为test.ui。

  • 命令提示符,pyuic4 test.ui -o test.py,转为py文件。

  • 主程序这样写:
# -*- coding: utf-8 -*-
import urllib2
from bs4 import BeautifulSoup
import re
import chardet
import csv
########################################
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
import test
class TestDialog(QDialog,test.Ui_Dialog):  
    def __init__(self,parent=None):  
        super(TestDialog,self).__init__(parent)  
        self.setupUi(self)

app=QApplication(sys.argv)  
dialog=TestDialog()  
dialog.show()  
app.exec_()  
########################################
disease=unicode(dialog.lineEdit.text())
#disease='environmental+illness'
url ='http://expertscape.com/ex/'+disease  
req = urllib2.Request(url)
response = urllib2.urlopen(req)
result = response.read()
response.close()
soup = BeautifulSoup(result)

########################################
country_td= soup.find_all(id="expColTD_c")
country_text = str(country_td)
r_country = re.compile(r',(\d+),".*?,"(.*?)"\)')
country = r_country.findall(country_text)
begin_country=int(country[0][0]);
end_country=int(country[-1][0]);
########################################
city_td= soup.find_all(id="expColTD_t")
city_text = str(city_td)
r_city = re.compile(r',(\d+),".*?,"(.*?)"\)')
city = r_city.findall(city_text)
begin_city=int(city[0][0]);
end_city=int(city[-1][0]);
########################################
institution_td= soup.find_all(id="expColTD_i")
institution_text = str(institution_td)
r_institution = re.compile(r',(\d+),".*?,"(.*?)"\)')
institution = r_institution.findall(institution_text)
begin_institution=int(institution[0][0]);
end_institution=int(institution[-1][0]);
########################################
expert_td= soup.find_all(id="expColTD_a")
expert_text = str(expert_td)
r_expert = re.compile(r',(\d+),".*?,"(.*?)"\)')
expert = r_expert.findall(expert_text)
begin_expert=int(expert[0][0]);
end_expert=int(expert[-1][0]);
########################################
csv = ['SN, FN,CITY,COUNTRY,INSTITUTION\n']
file_name= disease+'_experts.csv'
file_object = open(file_name, 'w+')
for i in range(begin_expert,end_expert+1):
    Et=expert[i- begin_expert][1]
    r_match_indexes_s = re.compile('z\['+str(i)+'\]=\[(.*?)\]')
    match_indexes_s=r_match_indexes_s.findall(result)[0]
    r_city_index=re.compile('')
    match_indexes_n = [int(k) for k in match_indexes_s.split(',')]#这个表达式牛逼
    Cy  = 'none' 
    Cty = 'none'
    In= 'none'
    for index in match_indexes_n:      
        if index>=begin_city and index<=end_city:
            if Cy == 'none':
                Cy=city[index-begin_city][1]
            else:
                Cy=Cy+'&'+city[index-begin_city][1] 
        if   index>=begin_country and index<=end_country and country[index-begin_country][1]!='Worldwide'\
        and country[index-begin_country][1]!='Unspecified' and country[index-begin_country][1]!='Asia'\
        and  country[index-begin_country][1]!='Europe':
            if Cty == 'none':
                Cty=country[index-begin_country][1]
            else:
                Cty=Cty+'&'+country[index-begin_country][1] 
        if  index>=begin_institution and index<=end_institution:
            if In == 'none':
                In=institution[index-begin_institution][1]
            else:
                In=In+'&'+institution[index-begin_institution][1]            
    info=Et+','+Cy.replace(",","_")+','+Cty.replace(",","_")+','+In.replace(",","_")+'\n'
    info=info.decode('utf-8').encode('mbcs')
    csv.append(info)
file_object.writelines(csv)
file_object.close()



  • 转成exe===>>>因用了pyQT做界面,setup.py这样写:
from distutils.core import setup
import py2exe
setup(console=[{"script":"英文式主程序名.py"}], options={"py2exe":{"includes":["sip"]}})


打开终端运行setup.py py2exe ,咻的一下就出来了。

重复性工作,电子记录,做个存档而已。哪里都是 随意,随意。。。

0
0
查看评论

Information Expert(信息专家模式)

      设计模式是一种问题解决的方式,在面向对象中应用设计模式可以增加组件的重用性..减少类与类的耦合...GRASP通用责任软件分配模式 说它是面向对象的设计模式不如说是面象对象的设计要求...GRASP细分为九类:Information Ex...
  • lhypang2006
  • lhypang2006
  • 2007-06-17 15:32
  • 1509

Python专家编程

Python专家编程一、CPythonCPython是一个默认的、广泛使用的Python编程语言的实现。CPython是用C语言写的。除了CPython,还有两个高质量的Python实现:一个是Jython,它用Java编写;另一个是IronPython,它用CLR编写,用于.NET平台。CPyth...
  • chszs
  • chszs
  • 2009-01-13 14:56
  • 2732

中国移动何时成为“移动信息专家”

最近一段时间,移动通信领域两大运营商一个改了口号,一个计划换LOGO,被有些人理解成为3G之前的准备。从我个人的所知分析,3G不3G不那么重要,政府的重点应该是促进移动、联通的竞争,让他们能够更有效地利用现有网络资源。按照移动、联通现有的经营水平,上了3G搞不好也是浪费。企业广告的差距 我...
  • it_hefa
  • it_hefa
  • 2006-08-18 15:57
  • 1106

SI疾病传播模型实现

在SI疾病传播模型中,网络中的节点在任一时刻有两种可能的状态,易感态susceptible(S)和感染态infected(I)。处于易感态(S)的节点当被感染后转变为感染态(I)并且不能恢复。我们假设在t_0时刻网络中除了一个节点被感染了之外,这个节点就是传播源,其余的所有节点都处于易感态。之后传播...
  • robin_Xu_shuai
  • robin_Xu_shuai
  • 2017-06-25 08:58
  • 1863

【编程素质】OO原则

1,OO原则:   设计模式的使用并不一定会提升效率,我们需要根据实际情况来判断是否需要使用设计模式。在很多时候,只要遵循这些OO原则来写代码,也相当于使用了设计模式。毕竟设计模式就是根据这些OO原则形成的一套规范。 (1)封装变化    找出程序中会变化的方面,...
  • SunshineTan
  • SunshineTan
  • 2016-11-01 20:46
  • 267

Python 获取文件信息,文件相关

文件MD5信息 md5 = hashlib.md5(open(filename, 'r').read()).hexdigest() 文件大小 size = os.stat(filename).st_size
  • u012063703
  • u012063703
  • 2015-08-25 12:09
  • 738

使用Python抓取网页信息

之前用C#帮朋友写了一个抓取网页信息的程序,搞得好复杂,今天朋友又要让下网页数据,好多啊,又想偷懒,可是不想用C#了,于是想到了Python,大概花了两个小时,用记事本敲的,然后在IDLE (Python GUI)里面测试。发现Python之类的解释性语言很不错,又不用编译,写个脚本就好了。代码如下...
  • liminlu0314
  • liminlu0314
  • 2012-02-27 22:47
  • 5535

Python随手记(一) 获取目录信息

最近需要处理许多数据文件,常用matlab处理,虽然很方便,但是每次启动慢,很麻烦。用C语言之类的需要考虑细节,处理文件又只是随手用用,感觉不值得花费太多时间。后来发现Python是个不错的选择,小巧方便,因此找些资料开始学习下。入门细节不多说,直接用程序练习。 目的是为了熟悉文件操作,所以想先写...
  • RaymondCode
  • RaymondCode
  • 2012-09-19 07:55
  • 1381

关于GRASP中的专家模式

今天看到cwj007 的《职责分配模式分析准备》中写了一句:“专家模式:它的实质就是在满足这个职责所有的必需知道的信息的类上分配该职责。” 这话看起来挺拗口。我找到曾经看过的资料《applying UML and aptterns》中相关一段话“Assign a responsibility to ...
  • XYTsoft2001
  • XYTsoft2001
  • 2005-03-28 15:47
  • 1130

python废话五:python获取本机信息

python 获得本机MAC地址: def get_mac(): mac = uuid.UUID(int = uuid.getnode()).hex[-12:] mac_address = ":".join([mac[e:e+2] for e in range(...
  • u013062469
  • u013062469
  • 2016-01-25 10:54
  • 621
    个人资料
    • 访问:297679次
    • 积分:4767
    • 等级:
    • 排名:第7199名
    • 原创:202篇
    • 转载:1篇
    • 译文:0篇
    • 评论:49条
    博客专栏
    最新评论