python学习总结-- 字符串

来源:互联网 发布:spss19.0 统计软件 编辑:程序博客网 时间:2024/05/23 18:21

字符串

1. 基本概念

字符串是一个不可变序列,由字符元素组成,可以通过下标访问其中的元素等,进行格式化等等。

2. 字符串常量

字符串的表示方法有很多,如:

单引号                ’hello’

双引号                ”world”

三引号                ’’’this isa long string’’’

转义字符            ”begin:\n”

原始字符串        r’c:\code\python’

Unicode字符串 u’a big string’

下面一一进行解释。

1)单引号和双引号一样

Python的字符串中,单引号和双引号是一样的。同时使用两种引号可以在字符串不使用转义字符串包含其余字符。

>>>"what's your name?"

"what'syour name?"

 

2)三引号可以是三个单引号,也可以是三个双引号。它的特别之处是,可以跨行写字符串,而且字符串可以包含单引号和双引号,而不需要进行转义。

>>>'''this's a long string\n

          and can contain a lot of message

       a test'''

"this'sa long string\n\n\t    and can contain alot of message\n\ta test"

 

3)转义字符通过反斜线\在字符串中添加特殊的字符,如单引号’、换行符等。常见的转义字符有:

\:在语句的末尾添加\代表语句未完,接下行

\n: 换行符

\t: 制表符

\\: 字符\

\’: 字符’

\”: 字符”

\r:返回

\xhh:十六进制值

\ooo:八进制值

\u :unicode16位的十六进制值

\U:unicode32位的十六进制值

4)原始字符串以r开头,可以在原始字符串中放任何字符,而不会进行转义。例如要表示一个文件的路径,可以使用原始字符串r'c:\test\python'

 

5)unicode字符串,以u开头,unicode字符集是一个很大的字符集可以表示更丰富的字符。可以处理多个字节。

>>>u'ab\u0020cd'

u'abcd'

3. str()和repr()

python中有内建函数str()、repr()以及反引号运算符符` `用于获取对象的字符串形式。str()返回对象的较为合理的字符串,可读性好。反引号和repr()则以python合法的形式去创建一个字符串,进行返回。一般来说通过eval()函数可以重新获得该对象。

#结果相同

>>> str(1)

'1'

>>> repr(1)

'1'

#结果不同

>>> str(1000L)

'1000'

>>> repr(1000L)

'1000L'

>>> str('hello world')

'hello world'

>>> repr('hello world')

"'hello world'"

>>> print str('hello world')

hello world

>>> print repr('hello world')

'hello world'

#eval()

>>> eval(repr(1000L))

1000L

>>> eval(str(1000L))

1000

>>>

4. 字符串基本操作

字符串的基本操作主要有:字符串连接,索引、分片、乘法、成员存在性、内建函数

4.1字符串连接+

Python对+进行重载,字符串相加的时候表示将字符串进行连接。此外,连个字符串常量放到一起可以自动连接:

>>> a = "hello "

>>> b = "world!"

>>> a+b

'hello world!'

>>> 'Oneworld,'"One"'Dream!'

'One world,OneDream!'

4.2 索引

Python中的序列都具有索引及其操作。Python中索引有正有负,第一个元素的索引为0,其后元素的索引依次递增,为正索引。最后一个元素所以为-1,倒数第二个所以为-2,依次向前递减。因此可以理解为,序列中,除第一个元素索引只有一个0,其余元素均有正负两个索引。

可以通过索引获取序列的值。

>>> 'this is a test'[6]

's'

4.3 分片

格式:字符串[起始索引:结束索引:步长],返回一个字符串

通过索引我们可以获取序列的一个元素,而分片可以获取序列的多个元素。如

>>> c = "That's veryintresting!"

>>> c[1:3]

'ha'

返回字符串索引从1到3之间(不包括3)的字符串。

说明:

1.分片获得从起始索引到结束索引之间的元素,不包括结束索引

2.默认步长为1,可以显示指定。步长可以为正,也可以为负。正的步长表示从前向后开始复制,负的步长表示从后向前复制。要注意的是,索引的起始和结束值与步长要一致。

3.索引可以缺省,缺省时表示从字符串开头(步长为正),或者字符串末尾(步长为负)进行复制。起始和结束索引都缺省时表示复制整个字符串

>>> a = 'hello, world'

#正负索引

>>> a[1:3]

'el'

>>> a[-4:-1]

'orl'

#指定布长

>>> a[1:8:2]

'el,w'

>>> a[-1:-7:-1]

'dlrow '

#缺省索引

>>> a[-4:]

'orld'

>>> a[:3]

'hel'

>>> a[:]

'hello, world'

4.4乘法*

>>> 'hello '*2

'hello hello '

>>> 20*'*'

'********************'

>>>

4.5成员存在性in

a in b:若字符串b中包含字符串a,则返回True,否则返回False。其中a可以是单个字符,也可以是多个字符。

>>> 'h' in 'so high'

True

>>> 'good' in 'such a goodday'

True

>>> 'I' in 'there is no i inthis statement'

False

4.6内建函数

Python中有很多内建函数,这里介绍len()、max()、min(),功能分别是:获取字符串元素的个数,返回字符串中最大字符,返回字符串中最小字符。

>>> c = 'there are threebuilt-in functions in python'

>>> len(c)

44

>>> max(c)

'y'

>>> min(c)

' '

5. 字符串格式化

如:

>>>'hello,%s,nice to meeting you.' % 'Python'

'hello,Python,nice to meeting you.'

字符串格式化分为两部分,%左边是格式化字符串,右边是被格式化的值。值可以是字符串、数字、元组以及字典等。

#元组

>>> form = 'hello,%s.%s enoughfor yo'

>>> values = ('world','good')

>>> form % values

'hello,world.good enough for yo'

#数字

>>> 'your number is :%d' % 23

'your number is :23'

其中格式化字符串由%、转换标志、宽度、精度、转换类型组成。

如:

>>> '%-10.2f' % -3.1415926

'-3.14     '

转换标志:+表示显示正负号,-为左对齐,0表示位数不够用0补充。默认在正数之前保留空格。

宽度为转换后最小的字符宽度

精度为若是数字表示保留的小数点位数,若是字符串表示字符串的最大字符数。若是*,可从元组读取宽度。

转换类型主要有s(字符串)、d(整数)、f(实数)、c(单个字符)、o(八进制)、x(十六进制)等等。

#转换类型

>>> 'Price of eggs :$%d' % 42

'Price of eggs :$42'

>>> 'Price of eggs :$%x' % 42

'Price of eggs :$2a'

>>> 'Price of eggs :$%s' % 42

'Price of eggs :$42'

#宽度和精度

>>> from math import pi

>>> '%10f' % pi

' 3.141593'

>>> '%10.2f' %pi

'     3.14'

#符号、补0

>>> '%010.2f' %pi

'0000003.14'

>>> '%-10.2f' %pi

'3.14      '

6. 字符串方法

除了运算符,字符串还有很多方法可以实现更多的功能,这里介绍常见的几个。

1.字符串的分割和连接:

join

功能:将字符串序列中的每个字符通过指定的字符进行连接,返回连接后的字符串。是split的逆方法。

用法:‘连接字符’.join(字符串序列)

例:

>>> lines = 'hello'

>>> '*'.join(lines)

'h*e*l*l*o'

split

功能:将字符串按指定的字符进行分割,返回分割后的列表。若没有指定分隔符,默认把所有空格包括空格、制表、换行等作为分隔符。

用法:‘字符串’.split(‘分隔符’)

例:

>>> 'h*e*l*l*o'.split('*')

['h', 'e', 'l', 'l', 'o']

>>> 'this\nis a\tstatement'.split()

['this', 'is', 'a', 'statement']

 

2.字符串的转换

lower

功能:将字符串中的大写字母转换成小写字母返回。

用法:‘原字符串’.lower()

例:

>>> org = '****Hello,World!***'

>>> org.lower()

'****hello, world!***'

与该方法对应的是upper(),将字符串中的小写字母转换成大写字母返回

strip

功能:将字符串两端的指定字符或者空格去除。默认去除空格。注意只是两端的,不包括中间部分。而且可以去除不只一种字符。

例:

>>> '      ****One World,One Dream****    '.strip()

'****One World,One Dream****'

#去除空格和*

>>> '      ****One World,One Dream****    '.strip('* ')

'One World,One Dream'

 

3.字符串的查找和替换

find

功能:用于查找子字符串在原字符串中的位置,返回子串所在位置的最左端索引。若没有找到返回-1.

用法:’长字符串’.find(‘子串’)

>>> subject = '$$$I am agirl.##who are you?'

>>> 'girl' in subject

True

>>> subject.find('girl')

10

与in相似,但返回值不同。

find()函数还可以接收起始点和结束点参数,进行查找。

>>> subject.find('girl',15,20)

-1

>>> subject.find('girl',12)

-1

replace

功能:将字符串中的所有匹配的字符替换成新字符后返回

用法:strs.replace(str_old,str_new)

>>> strs = 'this is sogood,but that is very bad!'

>>> strs.replace('is','was')

'thwas was so good,but that was verybad!'

但是,replace一次只能进行对一个字符串进行替换。这时我们引如translate方法,它只能替换单个的字符,但可以同时进行多个替换,将多字符同时替换成另外多个其他字符。

translate

功能:将字符串中的单个字符替换成另外的字符。

用法:‘原字符串’.translate(table)

这里看到,translate方法接收的参数是一个转换表,它是字符替换关系,通过string模块的maketrans函数创建。

>>> from string importmaketrans

>>> table = maketrans('cs','kz')

>>> 'this is an incredibletest'.translate(table)

'thiz iz an inkredible tezt'

这里可以看到,元字符串中的c被替换为k,s被替换为z。这就是对应关系。此外,translate可以接收第二个参数,删除字符串中指定的字符。

>>> 'this is an incredibletest'.translate(table,' ')

'thizizaninkredibletezt'

字符串还有很多很多的方法,可以查阅相关资料进行学习

原创粉丝点击