python知识点汇总

一、python列表知识点

1、python列表经典教程

2、python3.2列表操作总结

3、深入 Python :Dive Into Python 中文版——list

二、字符串的split函数

print 'a b c d e f g'.split()

print 'a,b,c,d,e,f,g'.split(',')

结果都是:['a','b','c','d','e','f','g']

字符串的split函数默认分隔符是空格 ' ',如果没有分隔符,就把整个字符串作为列表的一个元素

S.split([sep [,maxsplit]]) -> list of strings

以sep为分隔符,把S分隔成一个list。maxsplit表示分割的次数。默认的分割字符为空白字符。空白字符包括空格、TAB、换行...另外,还有S.rsplit([sep,[maxsplit]])和S.rsplit([sep,[maxsplit]])。

contype = 'application/octet-stream'
maintype, subtype = contype.split('/', 1)
print maintype,subtype

结果为:application octet-stream
即maintype值为application,subtype值为:octet-stream

也就是说字符串contype通过split,使用符号“/”做为分隔字符串,如果指出maxsplit,那么至多maxsplit完成分割。注意,由于列表是由下标0开始,所以如果maxsplit值为1,正如上面的例子中一样,表示要分为两段。分别给予列表中的两个变量:maintype和subtype

测试代码:

contype = 'application/octet-stream/sss'
maintype, subtype = contype.split('/', 1)
print maintype,subtype

结果为:application octet-stream/sss
即maintype值为application,subtype值为:octet-stream/sss

由于这里列表中只有两个变量,所以maxsplit值只能为1,小于1或大于1都将会显示错误。也就是说,如果采用上述给列表赋值方式,那么maxsplit的值必须要等于列表的下标最大值,在提醒一下,列表下标从0开始。如果列表有四个元素,那么maxsplit值必须等于3。

如果分隔符(sep)没有指定或为无,任何空白的字符串将做为“分隔字符串”,且空白字符从结果中被删除,注意:空白字符包括空格、换行符、制表符等,例如:

print 'a b c d e f \t\n   g'.split()

输出的结果为:['a', 'b', 'c', 'd', 'e', 'f', 'g']

与split作用相反,我在这也介绍一下join。join用来连接字符串,与split恰好相反,拆分字符串的。不用多解释,看完代码,其意自现了。

>>>li = ['my','name','is','bob']
>>>' '.join(li)
'my name is bob'
>>>s = '_'.join(li)
>>>s
'my_name_is_bob'
>>>s.split('_')
['my', 'name', 'is', 'bob']

join的功能就是返回一个字符串——即以其参数字符串做为连接符,将序列中的每个元素连接起来。

三、获取不带路径的文件名

import os.path
file_name = "c:/1.png"
basename = os.path.basename(file_name)
print basename

os.path模块详情访问:http://my.oschina.net/cuffica/blog/33494

四、python三元运算符的正确方法

python三元运算符:

V1 if 条件 else V2

如果条件为真,返回V1值;如果条件为假,返回V2值

注意:该语法适用python 2.5及以上版本

五、python中中文乱码问题的原因及解决方案

1、字符串在Python内部的表示是 unicode 编码。因此在做编码转换时,通常需要以unicode作为中间编码,即先将其它编码的字符串转换为unicode,再从unicode编码转换成另一种编码。

将其它编码的字符转换成unicode编码的语法是:str.decode("gb2312") 表示将gb2312编码的字符串str转换成unicode编码

将unicode编码转换成其他编码的语法是:str.encode("gb2312") 表示将unicode编码的字符串str转换成gb2312编码。

2、在转换编码的时候,一定要先搞明白,当前转码的字符串是什么编码。只有确定欲转换的字符串的编码,你才能灵活运用decode和encode来实现编码转换。

3、如何确定当前字符串的编码呢?

代码中字符串的默认编码与代码文件本身的编码一致。比如你的程序内容如下:

s="中文"
print s

该文件保存时编码格式为utf-8,那么这里的字符串s的编码就是utf8编码。同理,如果你保存时的编码格式为GB2312,那么这里的字符串s的编码就是gb2312。
不管文件保存时编码是什么,如果程序中字符串是这样定义的:

str=u"中文"

那么,该字符串的编码就被指定为unicode编码了,即Python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换为指定编码即可。

注意:如果一个字符串已经是unicode编码,再使用decode进行解码则将出错。因此通常要对其编码是否为unicode进行判断:

isinstance(s, unicode) #用来判断是否为unicode,是unicode返回true,否则返回false

同理,对于非unicode编码形式的str,使用encode会报错。强调:encode方法就是将unicode编码转为其它编码的方法。

4、如何获得系统的默认编码?

#coding=utf-8
import sys
print sys.getdefaultencoding()

注意:某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串编码,而不是程序本身的问题。

比如:

s=u"中文"
print s

如果提示错误,则将最后一句改为:

print s.encode("gb2312")

则会正常输出“中文”,而不会出现乱码现象。

另外,unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为unicode编码

使用str.__class__可以查看str的编码形式

原理说了半天,最后来个包治百病的吧:)

#!/usr/bin/env python
#coding=utf-8
s="中文"
if isinstance(s, unicode):
	#s=u"中文"
	print s.encode('gb2312')
else:
	#s="中文"
	print s.decode('utf-8').encode('gb2312')

来源:http://www.51testing.com/?uid-75417-action-viewspace-itemid-219300

chardet 字符编码判断

chardet 通用编码检测器

支持

■ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
■Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
■EUC-JP, SHIFT_JIS, ISO-2022-JP (Japanese)
■EUC-KR, ISO-2022-KR (Korean)
■KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
■ISO-8859-2, windows-1250 (Hungarian)
■ISO-8859-5, windows-1251 (Bulgarian)
■windows-1252 (English)
■ISO-8859-7, windows-1253 (Greek)
■ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
■TIS-620 (Thai)

需要python2.1以上

下载地址:http://pypi.python.org/pypi/chardet/1.0.1#downloads

安装方式:

方法一(推荐)

解压后,将chardet文件夹复制到 /Lib/site-packages 目录即可。

方法二:解压后
cd chardet-1.0.1
sudo python setup.py install

使用案例

import chardet
file= open("bianma.txt",'r') #打开目标文件
line=file.readline()
en=chardet.detect(line) #检测文件编码
print(en["encoding"]) #输出文件编码

识别网页字符编码

>>> import urllib 
>>> rawdata = urllib.urlopen('http://www.google.cn/').read() 
>>> import chardet 
>>> chardet.detect(rawdata) 
{'confidence': 0.98999999999999999, 'encoding': 'GB2312'} 
>>> 

 详情访问:http://zhwei.sinaapp.com/archives/393.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值