python朝花夕拾

Q1:HTTP Error 403: Forbidden

python中经常使用urllib2.urlopen函数提取网页源码,但是有些时候这个函数返回的却是:HTTP Error 403: Forbidden,这表明源网站不允许爬虫进行爬取

解决方法:伪装成浏览器进行访问

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2

url = "http://www.google.com/translate_a/t?client=t&sl=zh-CN&tl=en&q=%E7%94%B7%E5%AD%A9"
#浏览器头
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request(url=url,headers=headers)
data = urllib2.urlopen(req).read()
print data

这样就可以得到网页源码了~

注:如果源码中中文为乱码,可以使用:

print data.decode("UTF-8")

参见 http://www.geekcome.com/content-10-3101-1.html

Q2:文件读写

read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中,readline() 和 .readlines()之间的差异是后者一次读取整个文件,象 .read()一样。.readlines()自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for... in ... 结构进行处理。另一方面,.readline()每次只读取一行,通常比 .readlines()慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用.readline()

注意:f.readline()完成后最后一个字符是 ‘\n’,此时光标已经定位到了下一行的第0个位置,如果需要去除最后的回车键‘\n’,则为

 line = f.readline()
 line = line[:-1]

也可以用"string".strip('\n')

参见http://www.cnblogs.com/kaituorensheng/archive/2012/06/05/2537347.html
 
for line in open('poem.txt'):
    line = f.readline()
    print line

</pre><pre name="code" class="python"><span style="font-size:14px;">f = open('test.txt', 'r')                   #以读方式打开文件
for line in f.readlines():  
    print line</span>

</pre><p><span style="color:rgb(51,51,51); font-size:13.63636302947998px; font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; line-height:25.99431800842285px">write()方法把字符串写入文件,writelines()方法可以把列表中存储的内容写入文件。这点需要注意,如果用write方法写入list类型,会报TypeError: expected a character buffer object错误,此外<span style="color:rgb(51,51,51); font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; font-size:13.63636302947998px; line-height:25.99431800842285px">writelines()不会换行,需要手动换行。</span></span></p><p><span style="color:rgb(51,51,51); font-size:13.63636302947998px; font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; line-height:25.99431800842285px"><span style="color:rgb(51,51,51); font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; font-size:13.63636302947998px; line-height:25.99431800842285px"></span></span></p><p><span style="color:rgb(51,51,51); font-size:13.63636302947998px; font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; line-height:25.99431800842285px"><span style="color:rgb(51,51,51); font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; font-size:13.63636302947998px; line-height:25.99431800842285px">Q3:list到str转换</span></span></p><p><span style="color:rgb(51,51,51); font-size:13.63636302947998px; font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; line-height:25.99431800842285px"><span style="color:rgb(51,51,51); font-family:fontello,icomoon,tmt-icons,MD_Font,octicons,'Glyphicons Halflings',FontAwesome,dashicons,iconfont,'Segoe UI','WenQuanYi Micro Hei','WenQuanYi Micro Hei Mono','Microsoft Yahei','Microsoft Yahei Mono',,,微软雅黑,sans-serif; font-size:13.63636302947998px; line-height:25.99431800842285px"></span></span></p><div class="line number1 index0 alt2"><pre name="code" class="python">
>>>> welcome_str ="Welcome you"
>>>> welcome_str[0] 'W'
>>> git_list = ["qiwsir","github","io"]
>>> git_list[0]
'qiwsir'


list和str的最大区别是:list是原处可以改变的,str则原处不可变

list和str转化
str.split()
>>> line = "Hello.I am qiwsir.Welcome you."   
>>> line.split(".")   #以英文的句点为分隔符,得到list 
['Hello', 'I am qiwsir', 'Welcome you', '']   
>>> line.split(".",1)  #这个1,就是表达了上文中的:If maxsplit is given, at most maxsplit splits are done. 
['Hello', 'I am qiwsir.Welcome you.']       
>>> name = "Albert Ainstain"  #也有可能用空格来做为分隔符 
>>> name.split(" ") 
['Albert', 'Ainstain'] 
join可以说是split的逆运算

从list得到的字符串做切片操作

list[0][1:]  #remove the first character

Q4:list对应元素相加

使用zip函数

zip就是把2个数组糅在一起
x=[1, 2, 3, 4, 5 ]
y=[6, 7, 8, 9, 10]
zip(x, y)就得到了
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

list12 = [x+y for x,y in zip(list1,list2)]

l1=[[1,2],[3,4],[5,6]]对应元素的和

>>> l1=[[1,2],[3,4],[5,6]]
>>> list(map(sum,zip(*l1)))
[9, 12]

zip参考:http://www.lfyzjck.com/python-zip/

Q5:判断数据类型

import types
type(x) is types.IntType # 判断是否int 类型
type(x) is types.StringType #是否string类型
types.ListType == type(text)
Q6:三目运算符

true_part if condition else false_part

>>> 1 if True else 0
1
>>> 1 if False else 0
0

Q7:list去重

http://www.jb51.net/article/55342.htm

ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(ids.index)


Q8:Python的函数指针

#Icmp----Generates some ICMP traffic
def matchIcmp(json_data):
    if json_data['network']['icmp']:
        print 'Generates some ICMP traffic'
func_sets=[matchEntropy,matchIcmp,matchIrc,matchHttp,matchSmtp,matchDomain,matchFile,matchRegister,matchMutex,matchApi]
for func in func_sets:
    func(json_data)
</pre><pre name="code" class="python">#模块中,类外的函数指针调用
def hwFunc1(x):
    print("waleking's func1")
def hwFunc2(x):
    print("%s" %(x+1))
    print("waleking's func2")
funcSets={"func1":hwFunc1,"func2":hwFunc2}
funcSets["func1"](1)


Q9:TypeError: ‘NoneType’ object is not iterable

原因:最终所被调用的函数所返回的值,和返回值赋值给的变量,不匹配。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值