python实用小语法

python语言从基础到实践:http://www.it168.com/redian/pyth/

一:常用类型转换

str(x )                 将对象 x 转换为字符串
repr(x )                将对象 x 转换为表达式字符串,repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。 repr和反引号` `一样的作用。他们与eval是相反的一对
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象
chr(x )                 将一个整数转换为一个字符
unichr(x )              将一个整数转换为Unicode字符
ord(x )                 将一个字符转换为它的整数值,即将一个unicode字符转为对应的整数值

例如:将a=u‘盤’(其unicode为76e4,即等价于a=u'\u76e4')转化为一个16进制数字符串'76e4'

方法为:b="%x" %ord(a)即得到字符串'76e4',

若要将字符串'76e4'转化为a=u'盤’

方法为:a=unichr(eval("0x"+b))或者b=eval("u'\\u"+a+"'")

hex(x )                 将一个整数转换为一个十六进制字符串,十六进制的字符串转数字只要使用eval即可以
oct(x )                 将一个整数转换为一个八进制字符串

设var是一个任意类型的变量

>>var

>>print repr(var)

的输出是一样的,

repr(var)的输出=var的输出两边加入"",即把var的输出转换为字符串

id(x): x的内存id

a is b: a和b指向同一个引用,即内存id相同

a=eval('{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}')

eval用于计算字符串的python语法值

与exec( 'a={"city":"Beijing","street":" Chaoyang Road ","postcode":100025}')有点不一样

exec用于执行一段语句

当一个字符串被exec,eval(),或execfile()执行时,解释器会先将它们编译为字节代码,然后再执行.这个过程比较耗时,所以如果需要对某段代码执行很多次时,最好还是对该代码先进行预编译,这样就不需要每次都编译一遍代码,可以有效提高程序的执行效率。
compile(str ,filename ,kind )函数将一个字符串编译为字节代码

===========================================================

二:自动识别字符串编码与汉字转unicode字符串

isinstance(s, unicode) 用来判断是否为unicode

isinstance(a,type):a是否为type类型,返回bool值,True值为1,False为0。

 type(str).__name__!="unicode"#只有unicode与str两种类型,没有utf8的判断。

1.自动识别字符串编码: 
#coding:utf8
#chartdet官方下载网站http://pypi.python.org/pypi/chardet 
import urllib
import chardet 
rawdata = urllib.urlopen('http://www.google.cn/').read()
print chardet.detect(rawdata) 
输出: 
#confidence是可信度,encoding是编码
{'confidence': 0.99, 'encoding': 'utf-8'}
2.汉字转化为unicode编码
name = u'中国'
tmpname = ""
for c in name:
    c = "%%u%04X" % ord(c)#格式化输出
    tmpname += c
print tmpname
>>>%u4E2D%u56FD
其实有更好的方法:使用repr或(反引号,它们等价)
repr(name).strip("u'").replace('\\','%').upper().replace('u','U')
>>>%u4E2D%u56FD
====================================

三:python编码解码注意的两点

一:有句话常说,都转为utf8处理。有问题,应该是都转为unicode处理。一般文本文件的编码是utf8,在代码里用utf8解码为unicode,写文件时把unicode编码为utf8,然后写入文件。
二:windows中cmd的中文编码是gb2312,所以如果print以utf8编码的中文会乱码
如下例:
name="中国"#为gb2312
name1=name.decode('gb2312')#转为unicode
name2=name1.encode('utf8')转为utf8
print name2
>>>涓浗
乱码了!!!
而print name和print name1都没问题,说明windows的cmd窗台不支持utf8编码,支持unicode和gb2312
============================================

四:python中字符串前r的作用,举例:

a=r'\\'#相当于a='\\\\',即两个\\符号
print a
>>>\\
a
>>>'\\\\'
=========================================

五:python 打印所有汉字:

n=0
for ch in xrange(0x4e00, 0x9fa6):
    print unichr(ch),
    n = n+1
    if(n%50==0):
        print '\n'
print n 

一个int,32位,一个16进制4位,所以32位的数用8个16进制就可以表示
一个char一个字节即8位,即两个16进制
一个汉字两个字节即16位,即用4个16进制
========================================================

六:使用print写文件,所见即所得

写文件,除了常用的文件f=open('test','w')的write函数可以利用print把print的内容写入文件,
用法如下,print >>f,'ab',不过这样会加入换行
=========================================================

七:repr和eval灵活的用可以产生很多效果

例如:要把字符串a='76e4'转成b=u'\u76e4'即所对应的汉字盤
方法如下:b=eval("u'\\u"+a+"'")即可或b=unichar(eval("0x"+a))
=========================================================

八:在十进制,十六进制,八进制之间转换的方法:

只有十进制是指的数,十六进制和八进制都是字符串,十六进制以0x开头,八进制以0开头,下面只介绍十进制与十六进制之间互相转换,十进制与八进制间互相转换的办法。十六进制和八进制之间的转换可以通过十进制为媒介。
十进制a=1356转为十六进制b='0x54c'
>>>b=hex(a)
十六进制b='0x54c'转为a=1356
>>>a=eval(b)
十进制a=1356转为八进制b='02514'
>>>b=oct(a)
八进制b='02514'转为a=1356
>>>a=eval(b)
==========================================================

九:改变python的工作目录

import os

# 获得当前目录
>>> os.getcwd()
'/home/piglei'
# 改变工作目录
>>> os.chdir("abc/")
>>>os.chdir("abc\\")

要注意的是,在很多语言,python,html,windows 资源管理器中地址中'/'和'\'一样,不过由于\通常用于转义,所以表示'\'得用一个反转义'\\'

所以使用反斜杠作为目录层级标志的话,必须os.chdir("abc\\")或者os.chdir(r"abc\")


================================================

十:若代码中含有中文,注意在代码的开头加入

# -*- coding:utf-8 -*-

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zlingh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值