python基础(一)字符串string

一、python string 概述

string在任何大部分编程语言里都是一个基础组成部分,python也不例外 。python 语言中同时还有一个string模块,该模快在python的发展中已经经历了一个历史轮回。在最开始的时候,python有一个专门的string的module,要使用string的方法要先import,但后来由于众多的python使用者
的建议,从python2.0开始,
string方法改为用S.method()的形式调用,只要S是一个字符串对象就可以这样使用,而不用import。同时为了保持向后兼容,现在的
python中仍然保留了一个string的module,其中定义的方法与S.method()是相同的,这些方法都最后都指向了用S.method
()调用的函数。要注意,S.method()能调用的方法比string的module中的多,比如isdigit()、istitle()等就只能用
S.method()的方式调用。

为了便于说明,这里举例看下s.method()方式与import string方式

puppet@361way:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a="abcdefg"
//S.method()直接调用
>>> a.upper()
'ABCDEFG'
//导入string模块的用法
>>> string.upper(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'string' is not defined
>>> import string
>>> string.upper(a)
'ABCDEFG'
//查看模块及其内部函数帮助
>>> help(string)
>>> help(string.find)

二、string 函数与方法

string的基本操作符:

len(str)                #串长度
cmp("my friend", str)   #字符串比较。第一个大,返回1,第二个大返回 -1,两者相等返回 0
max('abcxyz')           #寻找字符串中最大的字符
min('abcxyz')           #寻找字符串中最小的字符
+                       #连接2个序列
*                       #重复序列元素
in                      #判断元素是否存在于序列中

string模块提供的方法有:

字符串中字符大小写的变换:
S.lower() #小写
S.upper() #大写
S.swapcase() #大小写互换
S.capitalize() #首字母大写
字符串在输出时的对齐:
S.ljust(width,[fillchar])   #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar])   #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width)              #把S变成width长,并在右对齐,不足部分用0补足
字符串中的搜索和替换:
S.find(substr, [start, [end]])
#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
S.index(substr, [start, [end]])
#与find()相同,只是在S中没有substr时,会返回一个运行时错误
S.rfind(substr, [start, [end]])
#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
S.rindex(substr, [start, [end]])
S.count(substr, [start, [end]])   #计算substr在S中出现的次数
S.replace(oldstr, newstr, [count])
#把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
S.strip([chars])                  #把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
S.lstrip([chars])
S.rstrip([chars])
S.expandtabs([tabsize])           #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
字符串的分割和组合:
S.split([sep, [maxsplit]]) #以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
S.rsplit([sep, [maxsplit]])
S.splitlines([keepends])   #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
S.join(seq)                #把seq代表的序列──字符串序列,用S连接起来
字符串类型判断:
S.isalnum() #是否全是字母和数字,并至少有一个字符
S.isalpha() #是否全是字母,并至少有一个字符
S.isdigit() #是否全是数字,并至少有一个字符
S.isspace() #是否全是空白字符,并至少有一个字符
S.islower() #S中的字母是否全是小写
S.isupper() #S中的字母是否便是大写
S.istitle() #S是否是首字母大写的 

string的转换:

float(str) #变成浮点数,float("1e-1")  结果为0.1
int(str)        #变成整型,  int("12")  结果为12
int(str,base)   #变成base进制整型数,int("11",2) 结果为2
long(str)       #变成长整型,
long(str,base)  #变成base进制长整型,

string公共模块变量:

ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits = '0123456789'
hexdigits = '0123456789abcdefABCDEF'
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
lowercase = 'abcdefghijklmnopqrstuvwxyz'
octdigits = '01234567'
printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU...
punctuation = '!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~'
uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
whitespace = 'tnx0bx0cr '

字符串包含判断操作符in , not in

示例:

>>> a="abcdefdg"
>>> a*2
'abcdefdgabcdefdg'
>>> a.capitalize()
'Abcdefdg'
>>> a.replace("a","1")
'1bcdefdg'
>>> a.split("d")
['abc', 'ef', 'g']
>>> "a" in a
True
>>> "x" in a
False

注:上面也可以使用import string调用string函数,不过在使用时,需要指定第一个值为字符串,如string.spalit(a,"d")

三、string切片

python string切片操作符的语法为:

[start:stop:step]

即:[开始索引:结束索引:步长值] ,如下图所示,

string-cut

进行正行索引时,其值从0开始,反向索引时,从 -1 开始。步长值,默认为1,如果为2,则表示进行隔一个取一个,步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0 。

示例:

正向索引

>>> str1='abcde'
>>> str1[:]                 //取整个字符串
'abcde'
>>> str1[::2]            //取字符串的值,步长=2(即2步取一次值)
'ace'
>>> str1[:6]            //序列号从0开始,到n+1结束(即最后一个序列号的数是取不到的)
'abcde'
>>> str1[1:5]            //取字符串“bcde”
'bcde'

反向索引

>>> str1[-1]
'e'
>>> str1[-1:-5:2]  #输出空列表[],从反向第1个向反向第5个取,但步长为2,表示正向相隔二个取值。
''
>>> str1[-1:-5:-2]
'ec'

正反结合

>>> tag = '<a href="http://www.python.org">Python web site</a>'
>>> tag[9:30]
'http://www.python.org'
>>> tag[32:-4]
'Python web site'
>>> tag[-19:-4]
'Python web site'

最后,结合string的函数和切片,我们做一个字符串的小写转大写并反转的例子,如下:

>>> str1='abcde'
>>> str1[::-1].upper()
'EDCBA'
//也可以使用import string进行操作
>>> import string
>>> string.upper(str1[::-1])
'EDCBA'
>>> 




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.