当前位置: 移动技术网 > IT编程>脚本编程>Python > python实用小语法

python实用小语法

2019年04月19日  | 移动技术网IT编程  | 我要评论

柏杨家书,克利斯汀,龙血至尊全文阅读

 

一:常用类型转换

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'盤')转化为一个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官方下载网站https://pypi.python.org/pypi/chardet import urllib import chardet rawdata = urllib.urlopen('https://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 '
'
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'盤'即所对应的汉字盤 方法如下: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(dev/)
>>>os.chdir(dev//)

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

所以使用反斜杠作为目录层级标志的话,必须os.chdir(dev//)或者os.chdir(rdev//)

 

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

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网