计算器、字符编码

计算器

掌握了python的基本语法后,可以使用python shell来代替各平台带的计算器了

>>> (50-5*6)/4.0      # 数学表达式
5.0
>>> a=100
>>> hex(a)          # 十六进制
'0x64'
>>> oct(a)          # 八进制
'0144'
>>> import math
>>> math.cos(math.pi / 4.0)
0.70710678118654757
>>> math.log(1024, 2)
10.0
>>> math.pow(2,3)
8.0

编码转换

  • 查看ascii码值
>>> ord('a')        # 字母转数值
97
>>> chr(97)         # 数值转字母
'a'

文本处理

简单的解析可以使用正则表达式来,第3章已经举了个解析objective-c获取类中属性的例子。

正则对多重嵌套的处理会有问题,如html中<table>又有一个table,那解析就会乱掉。这时就要用更专门的库了来解析html了,如BeautifulSoup就比较方便,可以用它做爬虫什么的。

demo

展示把几个简单的java类的定义转换成objective-c的类定义。


测试网络发包

  • 使用pcurl构造http get、post请求,在第3章中已经给了例子
  • 使用struct的pack、unpack快速生成、解析网络包
>>> from struct import *
>>> pack('hhl', 1, 2, 3)
'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)
>>> calcsize('hhl')
8

其中,类型对照如下:

wxPython编写gui程序

wxwidgets是一个跨平台的GUI库,与qt类似,现在比qt活跃。wxPython是python对应的库。一个简单的窗口如下

import wx
app = wx.PySimpleApp()
frame = wx.Frame( None, -1, '' )
frame.SetToolTip( wx.ToolTip( 'This is a frame' ) )
frame.SetCursor( wx.StockCursor( wx.CURSOR_MAGNIFIER ) )
frame.SetPosition( wx.Point( 0, 0 ) )
frame.SetSize( wx.Size( 300, 250 ) )
frame.SetTitle( 'simple2.py' )
frame.Show()
app.MainLoop()

Django部署网站

Django是python的web框架。有了它,就可以使用python来写网页了。现在很多人已经开始用它来部署网站了,如国内新浪云SAE,就同时支持php建站和django建站。
有兴趣可以玩下。


sphinx-doc编写文档

sphinx-doc是一种基于python的文档编写工具。python的官方帮助文档就是使用它编写的(本文也是哈)。 sphinx-doc是reStructuredText,即使用带有简单语法的文本文件
来编写文件,然后通过编译,可以生成html,epub,man,pdf等多种格式。

plain text VS. WYSIWYG

使用文本文件编写,再使用工具编译生成文档(tex,docbook,sphinx都可算这个阵营),和所见即所得(微软的word,mac的page等)的编写方式相比有啥优缺点呢?

优点

  • 开源跨平台,文本文件任何平台都可以打开,编译工具也可以在任何平台运行
  • 能产生多种格式的文档,甚至可以简单地转为博客的markdown语法
  • 能够生成html等格式,便于发布交流,如发到网上,大家都可以看到了
  • 由于是文本,方便版本控制,也可以加注释,多人编写、合并文档更方便
  • WYSIWYG的编写,如果加载图片多了,会导致越来越卡,而plain text只是include一个文件,编译后才会加载
  • 基于网页的技术可以方便地调整文档格式,编写时可以更加注重内容
  • 插件较多,如特别适合各种代码的插入、语法高亮等

缺点

  • 没有WYSIWYG直观,只能编译后才能生成实际的文档,才能看到效果
  • 国内用的人比较少

sphinx-doc的安装

使用pip安装sphinx

pip install sphinx

sphinx使用

官方文档: http://sphinx-doc.org/contents.html

中译文地址: http://zh-sphinx-doc.readthedocs.org/en/latest/contents.html

demo

用sphinx创建一个文档工程。并加入一些简单的内容


One more thing: 爬虫

爬虫可以使用任何语言,如果你只是做一个简单功能、不考虑效率的爬虫,用脚本是最快的。有些网站的网页相当简单,有些甚至直接使用正则表达式就能全部匹配出想要的结果。为了让大家对python脚本更有兴趣,这里提供一个脚本,让大家学习,它能实现从xxx网站上,批量下载种子,哈哈[种子下载站jandown如果发生变化,需要修改代码],

# encoding:utf8
'''
Created on 2015-03-27@author: vincent
'''import pycurl, urllib
import StringIO
import os
import re
import sys
from optparse import OptionParserg_janDownURL=r"""http://www.jandown.com"""
g_janDownFetchURL=r"""http://www.jandown.com/fetch.php"""
g_janDownLinkRef=r"""http://www.jandown.com/link.php?ref="""g_fid=r"""16"""   #版块
g_ac168URL=r"""http://ac168.info/bt/thread.php?fid=%s&page=%d"""
g_ac168DataURL=r"""http://ac168.info/bt/"""
g_pages=1g_downloadDir=r"""c:\mybts"""
g_re_item=re.compile(r'''<h3><a\shref="(htm_data.*?)" id.*?target=_blank>(?!<)''', re.S)
g_re_jandown=re.compile(r'''<a href="(http://www.jandown.com.*?)"''', re.S)testURL=r"""http://www.jandown.com/link.php?ref=UgyMkq6s"""def getHtmlRead(url):c = pycurl.Curl()c.setopt(pycurl.URL, url)c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)")b = StringIO.StringIO()c.setopt(pycurl.WRITEFUNCTION, b.write)c.setopt(pycurl.FOLLOWLOCATION, 1)c.setopt(pycurl.MAXREDIRS, 5)
#    c.setopt(pycurl.CONNECTTIMEOUT, 60)
#    c.setopt(pycurl.TIMEOUT, 300)try:c.perform()except Exception as e:print "html read error %s\r\n" % urlreturn Nonereturn b.getvalue()def postHtmlRead(referUrl, data):c = pycurl.Curl()c.setopt(pycurl.URL, g_janDownFetchURL)c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)")b = StringIO.StringIO()c.setopt(pycurl.WRITEFUNCTION, b.write)c.setopt(pycurl.POSTFIELDS, urllib.urlencode(data))c.setopt(pycurl.FOLLOWLOCATION, 1)c.setopt(pycurl.REFERER, referUrl)# c.setopt(pycurl.HEADER, 1)# c.setopt(pycurl.CONNECTTIMEOUT, 0)c.setopt(pycurl.MAXREDIRS, 5)# c.setopt(pycurl.COOKIEJAR, "cookie.txt")try:c.perform()except Exception as e:print "html read error\r\n"return Nonereturn b.getvalue()g_total=0
def parseJanDown(url):global g_totalif url.find(g_janDownLinkRef)<-1:return Nonecode = url[len(g_janDownLinkRef)-len(url):]value = {'code':code}bt=postHtmlRead(testURL, value);if bt != None:fd=open(os.path.join(g_downloadDir, code+".torrent"), "w");fd.write(bt)fd.close()g_total+=1print "download %s.torrent complete..total %d" % (code, g_total)passdef crawlerOneItemPage(itemPageUrl):
#     print "crawlerOneItemPage %s" % itemPageUrlhtml=getHtmlRead(itemPageUrl)if html==None:return None# 只取一个item=re.search(g_re_jandown, html)if item != None:parseJanDown(item.groups()[0])# testPageUrl = r'''http://ac168.info/bt/thread.php?fid=16'''
def crawlerPageItems(pageUrl):html=getHtmlRead(pageUrl)items=re.findall(g_re_item, html)for i in items:url=g_ac168DataURL+icrawlerOneItemPage(url)def ac168_work(pages):g_pages = pagesfor i in range(1,g_pages):pageUrl= g_ac168URL % (g_fid, i)
#         print pageUrlcrawlerPageItems(pageUrl)passMSG_USAGE = "python getTorrent.py [-n pages]"def main():optParser = OptionParser(MSG_USAGE)optParser.add_option("-n","--pages",action = "store",type="int",dest = "pages")options, args = optParser.parse_args()pages = 1
#     if len(sys.argv)>2:
#         optParser.print_help()
#         exit()if options.pages == None:pages=1else:pages=options.pagesac168_work(pages)if __name__ == '__main__':main()

用脚本爬虫,爬href的链接是比较容易的,但是有些跳转链接是用js实现的,这些如果要爬的话,需要解释js,或者效率低点的做法,搞个ui,调用系统的浏览器控件来处理。


兴趣练习

  • 使用python编写一个自动代码生成器
    把常用的实现某些功能的代码归类,tag化,以后如果要用,只要使用关键字进行搜索,就能把代码提取出来。

  • 使用sphinx编写一份教程,并发布
    选一个你比较熟悉的领域,使用sphinx编写入门教程或笔记。

python入门系列(4) -- python常见应用相关推荐

  1. 十二章 Python入门系列之字典

    系列文章目录 第一章 Python入门系列之介绍 第二章 Python入门系列之PyCharm 第三章 Python入门系列之注释 第四章 Python入门系列之变量 第五章 Python入门系列之输 ...

  2. 视频教程-Python入门-系列游戏开发/太空阻击-Python

    Python入门-系列游戏开发/太空阻击 20年软件项目开发管理经验 工信部人才交流中心特聘专家讲师 日本U-CAN在线教育特聘主任讲师 国家十二·五规划软件工程教材作者(书:清华大学出版社出版) 中 ...

  3. 【Python入门系列】一个简单的数据分析问题——用Pandas揭秘美国选民的总统喜好

    阿里天池训练营学习笔记 学习链接~AI训练营Python 本文将展示一个实际操作,利用Pandas对美国大选的一些数据进行处理,题目的详细内容请点击此处~[Python入门系列]用Pandas揭秘美国 ...

  4. 第八章 Python入门系列之循环

    系列文章目录 第一章 Python入门系列之介绍 第二章 Python入门系列之PyCharm 第三章 Python入门系列之注释 第四章 Python入门系列之变量 第五章 Python入门系列之输 ...

  5. python 入门题库————python语句和基础数理

    python 入门题库 python 题库 Python使用符号_______表示注释 Python不支持的数据类型有 查看python版本的命令是 在Python中,print(type(16/4) ...

  6. Python入门必备,Python零基础入门

    近几年来,Python发展势头强劲,越来越多的公司加大了对Python开发人才的招聘.很多人都看好Python的发展,纷纷前来学习Python. 目前Python应用范围还是挺多的,从Web.爬虫.数 ...

  7. Python入门——第一章 python编程基础

    Python入门 文章目录 Python入门 第一章 python编程基础 1.1 基本输入输出 1.1.1使用print()函数进行简单输出 chr()函数 print()输出到指定文件 print ...

  8. 10分钟带你了解python_10分钟Python入门系列教程及学习资源分享

    本期分享笔记内容 归档此前入门教程文章,方便查看 10分钟带你Python入门的特点 简单谈下如何寻找Python学习资源 关于分享Python学习资源的分享问题 本人对于Python学习创建了一个小 ...

  9. python语言入门m-「数据挖掘入门系列」Python快速入门

    Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...

  10. python入门系列:包和模块

    基本概念 模块:将一组功能相关的代码写入一个单独的.py文件中,需要时进行导入,这个文件就是模块. 包:有层次的文件目录结构,内部有多个模块或多个子包,一般要有init.py这个文件(3.3+ 的版本 ...

最新文章

  1. k8s强制删除一直处于terminating状态的pod
  2. c创建python虚拟机_Docker-ce运用一:创建虚拟机
  3. Angular In-memory Web API使用介绍
  4. springboot static方法与构造方法加载@VALUE
  5. PyTorch 学习笔记(三):transforms的二十二个方法
  6. 计算机是怎样跑起来的pdf_程序是怎样跑起来的 -- 通过汇编语言了解程序的实际构成(中篇)...
  7. 【生信进阶练习1000days】day16~day22-RNA-seq data analysis with limma edgeR and Glimma
  8. bracktrack5r3安装+bt5r3下安装vmwaretools
  9. 《我这一辈子》 老舍 著
  10. c++ 字符串分割和数字格式化输出
  11. Android 二维码扫描(仿微信界面),根据Google zxing
  12. oracle临时表经常被锁_linux安装oracle
  13. 台式计算机快捷键大全,电脑常用快捷键有哪些
  14. 数据集下载OTB,VOT,UAV,鸢尾花
  15. 我发现一个地方能免费领取价值198元的手环,具有能量并且有高人加持过的,只要关注微信就可以免费领取
  16. BERT代码的解读1---数据处理部分
  17. kd树实现搜索的过程
  18. Apache atlas的UI界面如何修改密码
  19. “1万起投,年化达8%”?天安金交中心卖力“吆喝”的产品,是“香”还是“坑”?
  20. Vue中的过滤器(filter)

热门文章

  1. 我花了20年研究华为,发现了这些秘密……
  2. 深入理解操作系统——虚拟存储详解
  3. java 通过ffmpeg 将海康视频转码
  4. flixel 一个游戏开发的框架
  5. oracle表分区设计_论oracle分区表的创建与维护
  6. hihocoder 1251 Today Is a Rainy Day 2015北京区域赛C
  7. CentOS8桌面图标不显示
  8. 衡量计算机储存容量的常用计量单位是,衡量存储器的单位是什么
  9. H3CNE综合小实验
  10. 关于电子科技大学寝室电费缴费情况和满意度的调研