### 获得更多资料欢迎进入[我的网站](http://rlovep.com/)或者 [csdn](http://blog.csdn.net/peace1213)或者[博客园](http://www.cnblogs.com/onepeace/)
> 经过前面的介绍相信大家也对python有了一个初步的了解;本节主要介绍字符串,不管学习什么编语言字符串一定在其中扮演着重要的地位。本节主要讲解,字符串的定义以及怎么使用字符串;
# 字符串简介
字符串是一种序列,用于表示和存储文本。python中字符串一旦声明,就不能改变。所以也称为字符串常量;
python实际的三类字符串:
1.单双引号字符串:
~~~
>>> 'peace'
'peace'
>>> "peace"
'peace'
>>>
~~~
2.三引号字符串和转义字符串,raw原始字符串:
三引号字符串是可以换行;raw原始字符串是不进行转义;
~~~
#三引号字符串
>>> '''peace
... peace
... peace'''
'peace\npeace\npeace'
#转义字符串
>>> 'Im'peace'
File "<stdin>", line 1
'Im'peace'
^
SyntaxError: invalid syntax
>>> 'Im\'peace'
"Im'peace"
>>>
#原始字符串 不进行转义:
>>> print (r"c:\peace\n")
c:\peace\n
>>> print ("c:\peace\n")
c:\peace
~~~
3Unicode字符串:
~~~
>>> print(u'peace\u0020one')
peace one
>>>
~~~
# 基本字符串操作
前面将的所有标准序列操作(索引,分片,乘法,判断成员资格,求长度,取最大值和最小值)对字符串同样适合;但是字符串是不可变的,索引赋值和分片赋值是不允许的;如下:
~~~
>>> name="peace"
>>> name[1]='q'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>
~~~
# 字符串格式化
### 1.%字符:标记转换符开始
字符串格式化转换类型:
![类型](https://box.kancloud.cn/2016-06-06_5754eddbc5843.gif "")
演示如下:
~~~
#%s 格式化字符串:
>>> format="I\'m,%s,%s?"
>>> name=('One','peace')
>>> print (format % name)
I'm,One,peace?
#%f格式化实数:
>>> format="1.31400 with three decimals:%.3f"
>>> print(format % 1.31400)
1.31400 with three decimals:1.314
>>>
~~~
### 2.转换标志:
-:左对齐
+:在转换值之前加上正负号
“ ”:正数之前保留空格
0:转换值若位数不够用0填充
.或者.*:输出精度
下面我有单精度符号数进行演示:
以上操作对其他类型也可以
### 1.左对齐在%号加上-号即可;
~~~
>>> a=1.314520
>>> '%010.3f'%a
'000001.315'
>>> '%-010.3f'%a
'1.315 '
>>>
~~~
### 2.在输出前加上正负号:%后加上+
~~~
>>> a=1.314520
>>> '%+f'%a
'+1.314520'
>>>
~~~
### 3.正数之前保留空格:%后加上空格
~~~
>>> a=1.314520
>>> b=-a
>>> b
-1.31452
>>> '%f'%b
'-1.314520'
>>> '% f'%a
' 1.314520'
~~~
### 4.输出位数不够用0补充:%号后加上0
~~~
>>> a=1.314520
>>> '%010f'%a
'001.314520'
>>>
~~~
### 5.输出精度:%号后加上.或者.* 如果用*,此时精度数值会从元组参数中读出
~~~
>>> a=1.314520
>>> '%.3f'%a
'1.315'
>>> '%.*f'%(3,a)
'1.315'
>>>
~~~
# 字符串方法:
### find方法
find方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回-1。
~~~
>>> name="my name is peace and is"
#查找的是最左端的
>>> name.find('is')
8
#没有找到返回-1
>>> name.find('one')
-1
#可以提供查找的起点,下面时从9开始查
>>> name.find('is',9)
21
#当然可以同时给出终点和起点
>>> name.find('is',10,11)
-1
>>>
~~~
### join方法和split方法
join方法是用来连接序列中的元素(注意必须都是字符串),而split刚好相反,是用来将字符串分割成序列
~~~
#如果seq=[1,2,5,6]就会报错
>>> seq=['1','2','5','6']
>>> adhere='-'
>>> adhere.join(seq)
'1-2-5-6'
>>> adhere
'-'
>>> a=adhere.join(seq)
>>> a
'1-2-5-6'
>>> a.split('-')
['1', '2', '5', '6']
>>>
~~~
### lower方法
lower方法返回字符串的小写字母版。对于查找时非常有用的;见下面的例子:
~~~
>>> name='ONE Peace'
>>> k=name.lower()
>>> k
'one peace'
>>> 'ONE Peace' in ['one peace','nick name']
False
>>> 'ONE Peace'.lower() in ['one peace','nick name']
True
>>>
~~~
### replace方法和translate方法
replace方法返回某个字符串的所有匹配项均被替换之后得到的字符串。
translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比replace效率高得多。在使用translate转换前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。有时表比较长,我们还是不要自己写了,直接用maketrans方法就行了。maketrans方法接收两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换。
需要注意的是python3.0之前的版本maketrans函数在string中需要引入
~~~
>>> st='is is is is is'
>>> st2=st.replace('is','peace')
>>> st2
'peace peace peace peace peace'
>>> st='abcdefghijklm'
>>> table=st.maketrans('bc','aa')
>>> len(table)
2
>>> table
{98: 97, 99: 97}
>>> st.translate(table)
'aaadefghijklm'
~~~
### strip方法
strip方法返回去除两侧(不包含内部)空格(或者是指定字符)的字符串
~~~
>>> st=' aaaaa '
>>> st.strip()
'aaaaa'
>>> st='***jjjj***'
>>> st.strip('*')
'jjjj'
>>>
~~~
字符串入门就讲到这里;
#### 相关链接:
[python3入门之类](http://rlovep.com/2015/09/23/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E7%B1%BB/)
[python3入门之函数](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%87%BD%E6%95%B0/)
[python3入门之循环](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%BE%AA%E7%8E%AF/)
[python3之if语句](http://rlovep.com/2015/08/05/python3%E4%B9%8Bif%E8%AF%AD%E5%8F%A5/)
[python3入门之赋值语句介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E8%B5%8B%E5%80%BC%E8%AF%AD%E5%8F%A5%E4%BB%8B%E7%BB%8D/)
[python3入门之print,import,input介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8Bprint%EF%BC%8Cimport%EF%BC%8Cinput%E4%BB%8B%E7%BB%8D/)
[python3入门之set](http://www.cnblogs.com/onepeace/p/4791578.html)
[python3入门之字典](http://rlovep.com/2015/07/29/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E5%85%B8/)
[python3入门之字符串](http://rlovep.com/2015/07/28/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E7%AC%A6%E4%B8%B2/)
[python3入门之列表和元组](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%88%97%E8%A1%A8%E5%92%8C%E5%85%83%E7%BB%84/)
[python3入门之软件安装](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/)
[python3爬虫之入门和正则表达式](http://rlovep.com/2015/09/23/python3%E7%88%AC%E8%99%AB%E4%B9%8B%E5%85%A5%E9%97%A8%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/)