PythonTip >> 博文 >> python

Python的字符串 - 真实的活

zihua 2014-01-18 20:01:22 点击: 815 | 收藏


Python有内置的字符串类型, 内置的字符串是序列(Sequence), 是 不可变的序列 ,  所以 不可变 序列通用的方法对其都适用 .

对Python2, 内置的字符串类型有 strunicode

Python2

'abc' 是str, u'中国123'  是unicode

# Python2.7
>>> type('abc')
<type 'str'>
>>> type(u'中国123')
<type 'unicode'>

如果我们使用Python2, 应该都尽量使用unicode ,就算是纯英文的. 

Python3

但在Python3中, 没有预定义unicode类型了 ,内置字符串就是 str , 但是str中的字符 都是unicode编码的  

#Python3.3
>>> type(u'中国')
<class 'str'>
>>> type('abc')
<class 'str'>
>>> type(str)
<class 'type'>
>>> type(unicode)
NameError: name 'unicode' is not defined

下面讨论一些Python内置字符串常用的方法, Python2中这些方法对str和unicode基本都是一样的, 没有讨论到的去文档查阅就行,基本上需要的功能都有方法实现.

字符串分隔, split

str.split()接受分隔字符串, 返回分隔后的一个list

>>> s = 'wangyu@lvye.cn'
>>> s.split('@')
['wangyu', 'lvye.cn']

如果同一个分隔符连续多个存在,则在返回结果中会有 空字符串

>>> s = 'wangyu@@@@lvye.cn'
>>> s.split('@')
['wangyu', '', '', '', 'lvye.cn']

4个连续的@产生了3个空串

当分隔字符串是多字符的,必须是全匹配

>>> s = 'abc<>cba'
>>> s.split('<>')
['abc', 'cba']
>>> s = 'abc<>cba%$acb'
>>> s.split('<>$')
['abc<>cba%$acb']

str.split()也可以不接受参数,这时候是使用空格做分隔,且不产生空串,如果开头和结尾有空格,也会被忽略掉

>>> s = ' we are the   champion'
>>> s.split()
['we', 'are', 'the', 'champion']

子串替换

str.replace(old, new [, count])

replace把old替换成new,并且可以指定替换个数, 而且函数返回一个copy, 不会影响原来的str对象.

>>> s = 'he is nate, nate is his name'
>>> s.replace('nate', 'sky')
'he is sky, sky is his name'
>>> s
'he is nate, nate is his name'

子串查找

字串查找用find()或index(),  其中 index()是序列通用的方法

不同的是若没找到find()返回 -1 , index()抛出异常 ValueError , 找到返回字串索引.

find()和index()的语法相同

str.find(substr [, start [, end]])
>>> s='we are are the champion'
>>> s.find('ar')
3
>>> s='we are are the champion'
>>> s.find('ar', 4)
7

注意 ,如果只是想知道一个字符串是否包含一个子串,使用 in 

>>> s = 'we are the champion'
>>> 'are' in s
True

字符串的strip

同样的strip会copy一份原来的字串进行处理.

不加任何参数,去除左右的空格

>>> s = '    www.lvye.cn  '
>>> s.strip()
'www.lvye.cn'
>>> s.strip('wcn. ')
'lvye'

注意带上参数时, 空格要显示指定 .

Python str的方法,Python文档中很全.

------------------------- 

http://docs.python.org/3/library/stdtypes.html#str   Python文档

原文链接:http://www.tuicool.com/articles/UNJJFn7

作者:zihua | 分类: python | 标签: python | 阅读: 815 | 发布于: 2014-01-18 20时 |