Python字串操作

安全劍客發表於2019-06-30
6.1 處理字串
  1. 原始字串:在字串開始的引號之前加上r,使它成為原始字串。“原始字串”完全忽略所有的跳脫字元,列印出字串中的所有倒斜槓。
  2. 用三重引號的多行字串:多行字串的起止是3個單引號或3個雙引號。”三重引號“之間的所有引號、製表符或換行,都被認為是字串的一部分。
  1. 多行字串常常用作多行註釋。
  2. 字串下標和切片: 字串像列表一樣,使用下標和切片。
  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..    4apples......   12cups........    4cookies..... 8000-------PICNIC ITEMS-------
sandwiches..........     4apples..............    12cups................     4cookies.............  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 pypercliptext = pyperclip.paste()lines = text.split('\n')for i in range(len(lines)):    lines[i] = '*'+ lines[i]text='\n'.join(lines)
pyperclip.copy(text)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2649139/,如需轉載,請註明出處,否則將追究法律責任。

相關文章