python字符串操作

6.1 處理字符串
原始字符串:在字符串開始的引號之前加上r,使它成爲原始字符串。“原始字符串”完全忽略所有的轉義字符,打印出字符串中的所有倒斜槓。
用三重引號的多行字符串:多行字符串的起止是3個單引號或3個雙引號。”三重引號“之間的所有引號、製表符或換行,都被認爲是字符串的一部分。
多行字符串常常用作多行註釋。
字符串下標和切片: 字符串像列表一樣,使用下標和切片。
字符串in和not in 操作符:像列表一樣,in和not in操作符也可以用於字符串。
6.2 字符串方法upper()、lower()、isupper()、和islower()
upper()和lower()字符串方法返回一個新的字符串,其中原字符串的所有字母都被相應地轉換爲大寫或小寫。字符串中的非字母字符保持不變。

spam='hello world'
spam.upper()
'HELLO WORLD'
spam
'hello world'
spam =spam.upper()
spam
'HELLO WORLD'

#用islower(),isupper()來判斷字符串中的字母是否都是小寫和大寫。

spam.islower()
False
spam.isupper()
True

#這樣調用也是可行的

'hello'.upper()
'HELLO'
'HELLO'.lower()
'hello'

這些方法沒有改變字符串本身,而是返回一個新的字符串

6.2.1 isX字符串方法
isalpha() 返回True,如果字符串中值包含字母,並且非空
isalnum() 返回True,如果字符串中只包含字母和數字,並且非空
isdecimal() 返回True,如果字符串中只包含數字字符,並且非空
isspace() 返回True, 如果字符串中只包含空格,製表符和換行,並且非空
istitle() 返回True,如果字符串中只包含以大寫字母開頭,後面都是小寫字母的單詞。
該程序反覆詢問用戶年齡和口令,知道他們輸入一個有效的值:

while True:
print('Enter your age:')
age =input()
if age.isdecimal():
break
print('please enter a number for you age')

while True:
print('select a new password (letters and numbers only):')
password = input()
if password.isalnum():
break
print('passwords can only have letters and numbers.')
6.2.2 字符串方法startswith()和endswith()
startswith()和endswith()方法,如果他們調用的字符串以該方法傳入的字符串開始或結束,則返回True,反之則返回False。如果要檢查字符串的開始或結束部分是否等於另一個字符串,而不是整個字符串,這些方法就可以替代等於操作符==,這很有用。

6.2.3 字符串方法join()和split()
join()方法在一個字符串上調用,參數是一個字符串列表,返回一個字符串。返回的字符串由傳入的列表中每個字符串連接而成。

','.join(['cat','rat','bat'])
'cat,rat,bat'
''.join(['my','name','is','Simon'])
'mynameisSimon'
' '.join(['my','name','is','Simon'])
'my name is Simon'
'ABC'.join(['my','name','is','Simon'])
'myABCnameABCisABCSimon'

split()方法做的事情正好相反,它針對一個字符串調用,返回一個字符串列表。

'my name is Simon'.split()
['my', 'name', 'is', 'Simon']
'myABCnameABCisABCSimon'.split("ABC")
['my', 'name', 'is', 'Simon']
默認情況下,字符串'my name is Simon'按照空白字符分割,諸如空格、製表符或換行符。

6.2.4 用rjust()、ljust()和center()方法對齊文本
rjust()和ljust()字符串方法返回調用他們的字符串的填充版本,通過插入空格來對齊文本。這兩個方法的

第一個參數是一是整數長度,用於對齊字符串,
第二個可選參數是將指定一個填充字符,取代空格字符。
center()字符串方法與ljust()和rjust()類似,但他讓文本居中。

'hello'.rjust(10)
' hello'
'hello'.ljust(20)
'hello '
'hello'.rjust(20,'*')
'***hello'
'hello'.ljust(20,'*')
'hello***'
'hello'.center(10,'=')
'==hello==='
'hello'.rjust(10)是要右對齊,將'hello'放在一個長度爲10的字符串中'hello'有5個字符他會在左邊加5個空格,得到一個10個字符的字符串。

這個是一個打印表格式數據,流出空格的小代碼:

def printPicnic(itemsDict, leftWidth, rightWidth):
print('PICNIC ITEMS'.center(leftWidth + rightWidth, '-'))
for k, v in itemsDict.items():
print(k.ljust(leftWidth, '.') + str(v).rjust(rightWidth))

picnicItems = {'sandwiches': 4, 'apples': 12, 'cups': 4, 'cookies': 8000}
printPicnic(picnicItems, 12, 5)
printPicnic(picnicItems, 20, 6)
運行結果如下:

---PICNIC ITEMS--
sandwiches.. 4
apples...... 12
cups........ 4
cookies..... 8000
-------PICNIC ITEMS-------
sandwiches.......... 4
apples.............. 12
cups................ 4
cookies............. 8000

6.2.5 用strip()、rstrip()和lstrip()刪除空白字符
strip()字符串返回一個新的字符串,它的開頭和末尾都沒有空白字符。
lstrip()刪除左邊的空白字符
rstrip()刪除右邊的空白字符
有一個可選的字符串參數,指定兩邊的那些字符應該刪除。

spam = 'spamspamspambaconspameggsspamspam'
spam.strip('spam')
'baconspamegg'
向strip()方法傳入參數'spam',告訴它在變量中存儲的字符串兩端刪除出現的s、p、a、m。傳入strip()方法的字符串中的字符順序不重要strip('spam')和strip('mpsa')做的事情一樣

6.2.6 pyperclip()模塊拷貝粘貼字符串
pyperclip模塊有copy()和paste()函數,它可以像計算機的剪貼板發送文本,或從它接收文本。將程序的輸出發送到剪貼板,使他很容易粘貼到郵件,文字處理程序或其他軟件中。

實踐項目 在wiki標記中添加無序列表

import pyperclip

text = pyperclip.paste()
lines = text.split('\n')
for i in range(len(lines)):
lines[i] = '*'+ lines[i]
text='\n'.join(lines)
pyperclip.copy(text)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章