Python学习笔记(二)

Python判断类型

利用type函数,Python可以得到一个对象的类型

lst=[1,2,3]
print type(lst)

结果:<type 'list'>

不仅如此,还可以利用 isinstance 函数,来判断一个对象是否是一个已知的类型。

isinstance(object, class-or-type-or-tuple) -> bool

例如:isinstance(object, (A,B,...)) -> bool

第二个参数为对象,类或类型或元组

实例:

isinstance(lst, list)
True

isinstance(lst, (int, str, list))
True

s=u'大头爸爸CSDN博客'
isinstance(s, unicode) #用来判断是否为unicode

用来判断是否为unicode编码更多内容请访问:http://blog.csdn.net/zm2714/article/details/7989614#t4

python字符串

格式化字符串

print "%s %s" %("hello","world") 

将list转为字符串

a = ["a","b","c"]
print "-".join(a)

结果:a-b-c

替换字符串

str='abc'
print str.replace('a','A')

结果:Abc

交互模式中特殊变量 _

交互模式中,最近一个表达式的值赋给变量 _ 。这样我们就可以把它当作一个桌面计算器,很方便的用于连续计算,例如:

>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax12.5625
>>> price + _113.0625
>>> round(_, 2)
113.06

此变量对于用户是只读的,不要尝试给它赋值。

数组

range,xrange 这两个基本上都是在循环的时候用。

for i in range(0, 100):
print i

for i in xrange(0, 100):
print i

这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:

a = range(0,100)
print type(a)
print a
print a[0], a[1]

而xrange则不会直接生成一个list,而是每次调用返回其中的一个值

a = xrange(0,100)
print type(a)
print a
print a[0], a[1]

所以xrange做循环的性能比range好,尤其是返回很大的时候!

尽量用xrange吧,除非你是要返回一个列表。

注意:Python中没有数组的概念,只有list。

Python List 详细使用请访问:http://woodpecker.org.cn/diveintopython/native_data_types/lists.html

切片

1、[start:stop:step](不含stop
2、start表示切片开始的位置,不指定start,Python就从序列首开始;序列第一个值的位置为0
3、stop表示切片结束的位置,不指定stop,Python会停止在序列尾。stop可以为负值。-1表示序列最后一个值。
4、注意,返回的序列从开始位置开始,刚好在结束位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。
5、字符串12345。对应的位置为:0(-5),1(-4),2(-3),3(-2),4(-1)

"123456"[::-1]  #返回:654321

"123456"[:3:1]  #返回:123

"123456"[3::1]  #返回:456

生成随机数

import random  
rnd = random.randint(1,500);

读文件

 f = open("c:\\1.txt","r");  
 lines = f.readlines();#读取全部内容  
 for line in lines:  
 print line  

写文件

 f = open("c:\\1.txt","r+");#可读可写模式  
 f.write("123");#写入字符串  

Python的正则表达式

读取tomcat的日志文件,并且把日期开头的内容显示出来,例如:xxxx-xx-xx

   import re  
   regx = "\d\d\d\d-\d\d-\d+"  
   f = open("c:\stdout.log","r");  
   i = 0  
   for str in f.readlines();:  
       if re.search(regx,str);:  
            Response.write(str+"<br>");  
            if i>10:break#由于是测试,只分析十行  
        i=i+1  
   f.close();;  

抓取FarideaBBS首页的所有图片

  def farideaHttp();:    
  page = urllib.urlopen("../Boards.asp";);  
  body = page.readlines();  
  page.close();        
  return body  
  def anyHtml(line);
  import re  
  regx = r"""<img\s*src\s*="?(\S+);"?"""  
  match_obj = re.search(regx,line);  
  if match_obj!=None:  
    all_groups = match_obj.groups();  
  for img in all_groups:print img#这个img就是图片的链接了  
    lines = farideaHttp();#读取全部内容  
    for line in lines:  
        anyHtml(line);  

自动登录

#!/usr/bin/python
#coding=utf-8

import urllib
import urllib2
import cookielib

def post(url, data):
	req = urllib2.Request(url)
	data = urllib.urlencode(data)
	#enable cookie
	cookiefile = "cookiefile"
	cookieJar = cookielib.MozillaCookieJar(cookiefile)
	opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar));
	response = opener.open(req, data)
	cookieJar.save()
	#print response.read()

	#second http request use cookie
	cookieJar = cookielib.MozillaCookieJar(cookiefile)
	cookieJar.load()
	url = "http://www.xiami.com"
	opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
	response = opener.open(url)
	print response.read()

def main():
	posturl = "http://www.xiami.com/member/login"
	data = {'email':'mail','password':'aa','autologin':'1','submit':'登 录','type':''}
	#print post(posturl, data)
	post(posturl, data)

if __name__ == '__main__':
	main()

转载自:http://san-yun.iteye.com/blog/1493521

你可能感兴趣的:(正则表达式,python,list,url,Random,import)