字符串(String)是由零個或多個字符組成的有限串行。一般極爲s=a[1]a[2]…a[n]。
在python中用引號括起來的都是字符串,其中的引號可以是單引號也可以是雙引號。
'This is a string'
"This is also a string"
使用方法修改字符串大小寫
>>> name= "avril ramona lavigne"
>>> name.title()
'Avril Ramona Lavigne'
我們可以通過 dir(str.title) 來查看該方法
title(self, /)
Return a version of the string where each word is titlecased.
More specifically, words start with uppercased characters and all remaining cased characters have lower case.
類似的方法還有
>>> name.upper()
'AVRIL RAMONA LAVIGNE'
>>> name.lower()
'avril ramona lavigne'
字符串拼接
在很多情況下都需要合併字符串。python使用加號(+)來合併字符串。
>>> "Avril"+" "+"Ramona Lavigne"
'Avril Ramona Lavigne'
對於非字符串類型我們可以使用str()或者repr()來進行類型轉化。
>>>name="ada"
>>>n=name+str(123)
>>>n
'ada123'
字符串去除空白
對於字符串 ’ Avril Ramona Lavigne '和’Avril Ramona Lavigne’表面上看起來並沒有上面區別,實則有所不同,前者首尾皆有空白。
# 刪除右端空格
>>> a.rstrip()
' Avril Ramona Lavigne'
>>> b.rstrip()
'Avril Ramona Lavigne'
# 刪除左端空格
>>> a.lstrip()
'Avril Ramona Lavigne '
>>> b.lstrip()
'Avril Ramona Lavigne'
#刪除兩端空格
>>> a.strip()
'Avril Ramona Lavigne'
>>> b.strip()
'Avril Ramona Lavigne'
語法錯誤
在使用字符串時應避免一些語法上的錯誤。
>>> dog='This's dog'
File "<stdin>", line 1
dog='This's dog'
^
SyntaxError: invalid syntax
#改成使用雙引號或者轉譯字符即可
>>> dog="This's dog"
>>> dog='This\'s dog'
python中的字符串與列表類似,但字符串是不可變對象你不能像修改列表那樣改變字符串中的一個字符。例如:s=”string“,s[0]=‘S’,是錯誤的。如果我們想使s="String"則需要創建全新的字符串。
內存表示
相對於列表,python的內存表示方法較爲簡單。如下圖所示:
僅需要包含一下兩部分信息:
- 一個指向字符串中字符連續存儲的內存地址的引用。
- 字符串的長度
如果我們想通過數組來實現字符串,如定義一個s=[‘s’,‘t’,‘r’,‘i’,‘n’,‘g’]那麼在內存中又是如何實現的呢?
如下圖所示:
索引及切片
通過索引訪問指定字符
>>> str="hello world"
>>> str[0]
'h'
通過字符找到索引(第一個)
>>> str.index("w")
6
>>> str.index("1")
2
雖能訪問 但卻不能進行修改
>>> str[0]="1"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
切片
>>> str[1:3]
'el'
>>> str[1:]
'ello world'
>>> str[:3]
'hel'
>>> str[-2:]
'ld'
>>> str[:-1]
'hello worl'
引用複製
#引用複製
>>> id(str)
2894724648688
>>> copy1=str
>>> id(copy1)
2894724648688
>>> copy2=str[:]
>>> id(copy2)
2894724648688
基本操作
+:連接兩個序列。
*:重複序列元素。
in:判斷元素是否存在於序列中。
max():返回最大值。
min():返回最小值。
len():返回字符串的長度。
“+”連接字符串
連接兩個字符串。
>>> a="asd"
>>> b="qwe"
>>> a+b
'asdqwe'
* 操作
字符串中的“乘法”含義是重複那個字符串。
>>> a*3
'asdasdasd'
in操作
in用來判斷某個字符串是不是在另外一個字符串內,或者判斷某個字符串內是否包含某個字符串,如果包含,就返回True,否則返回False。
>>> "a"in a
True
>>> "a" in b
False
最值
返回字符串中ASCII編碼最大的或最小的字符。
>>> max(a)
's'
>>> min(a)
'a'
len()
返回字符串中的字符數。
>>> len(a)
3
字符串格式化輸出
%格式化輸出方式
所謂格式化輸出就是字符串線按照既定的版本,在這個模塊中某個或者某幾個地方留出空位來,然後在那些空位填上字符串。
佔位符 | 說明 |
---|---|
%s | 字符串(採用str()的顯示) |
%r | 字符串(採用repr()的顯示) |
%c | 單個字符 |
%b | 二進制整數 |
%d | 十進制整數 |
%e | 指數(底數爲e) |
%f | 浮點數 |
對於浮點數打印我們有時還需要精確到某位,這時我們可以限制輸出的小數位數和其他樣式:
>>> print("hello,%f"%0.3214)
hello,0.321400
>>> print("hello,%0.2f"%0.3214)
hello,0.32
>>> print("hello,%.2f"%0.3214)
字典式格式化輸出
>>> student={"zhang":64,"li":89,"wang":75}
>>> print("zhang's English score is %(zhang)d,wang's %(wang)d"%student)
zhang's English score is 64,wang's 75
string.format()格式化輸出方式
在python中還有一種新的格式化方法:string.format()的格式化方法,其中{}作爲佔位符。只需要將對應的東西按照順序在format後面的括號中排列好,分別對應占位符{}即可。
其中可中填入數字或字符以作標記
數字 | 格式 | 輸出 | 描述 |
---|---|---|---|
3.141592654 | {:.2f} | 3.14 | 保留小數點後兩位 |
3.141592654 | {:+.2f} | +3.14 | 帶符號保留(減同) |
5 | {:0>2d} | 05 | 右對齊寬度2以0補全 |
10 | {:x<4d} | 左對齊以x補全 | |
1000000 | {:,} | 1,000,000 | 以逗號分隔的格式 |
0.25 | {:.2%} | 25.00% | 保留兩位小數的分數顯示 |
1000000000 | {:.2e} | 1.00e+09 | 保留兩位小數的指數顯示 |
13 | {:>10d} | _____13 | 右對齊,寬度爲10 |
13 | {:<10d} | 13_____ | 左對齊,寬度爲10 |
13 | {^10d} | 13 | 居中,寬度爲10 |
# 對照位置填寫相應內容
>>> s="I like {0}.he like{1}".format("python","C#")
>>> s
'I like python.he likeC#'
# 上述表格的使用方法
>>> a="pi is {:.2f}".format(3.14159)
>>> a
'pi is 3.14'
# 也可以指定說明
>>> print("Hi,{asd}.It's really a {qwe}morning".format(qwe="pleasant",asd=" we haven't seen each other for a long time"))
Hi,we haven't seen each other for a long time.It's really a pleasant morning.