### 獲得更多資料歡迎進入[我的網站](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.%字符:標記轉換符開始
字符串格式化轉換類型:

演示如下:
~~~
#%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/)