2500字 字符串專題總結

我的完整施工計劃

已完成專題:

1.我的施工計劃

2.數值專題

這篇是字符串專題總結

除了常見的數值型,字符串是另一種常遇到的類型。一般使用一對單引號或一對雙引號表示一個字符串。

字符串中如果遇到 \ 字符,可能是在做字符轉義,所謂的轉義便是字符的含義發生改變,比如常用的\n 組合,轉義後不再表示字符n本身,而是完成換行的功能。

類似的,還有很多轉義字符,如 \t, 正則表達式中 \s\d等等。

接下來一一總結字符串常見用法,此專題展開的思維導圖如下:

字符串專題思維導圖

1 字符串創建

一般使用一對單引號或一對雙引號表示一個字符串。如下所示s 爲字符串:

s = 'python' # 或 s = "python"

很多情況下單引號和雙引號作用相同,但是一些情況還是存在微妙不同

例如,使用一對雙引號("")時,打印下面字符串無需轉義字符(也就是\字符):

In [10]: print("That isn't a horse")
That isn't a horse

但是使用一對單引號打印時,卻需要添加轉義字符 \,如下所示:

In [11]: print('That isn\'t a horse')
That isn't a horse

除此之外,如果遇到字符串偏長,一行容不下來,需要展示爲多行。一對三重單引號'''或三重"""就會派上用場,它們能輕鬆實現跨行輸入:

In [12]: print("""You're just pounding two
    ...: coconut halves together.""")
You're just pounding two
coconut halves together.

2 \ 轉義

轉義的語法:一個\+單個字符,組合後單個字符失去原來字面意義,會被賦予一個新的功能。

常見的轉義字符:\n 完成換行,\t tab 空格等。

轉義的另外一個重要作用是用於Python的正則。正則不僅指使用模塊 re 完成字符串處理,還泛指很多常用包中函數的參數使用小巧的正則表達,比如數據分析必備包 pandasstr訪問器中 split, cat 等方法參數中使用轉義字符。

關於正則處理字符串的常見用法,後面會有一個單獨的專題總結。

3 字符串與數字

字符串與數字結合也會十分有用,可以玩出很多有趣的花樣。

數字n乘以字符串會克隆出n倍個原字符串:

In [42]: 3*'py'
Out[42]: 'pypypy'

20乘以字符-會繪製出一條虛線:

In [43]: 20*'-'
Out[43]: '--------------------'

2個字符串常量能直接結合,中間不用添加任何東西,如下:

In [14]: 'Py''thon'
Out[14]: 'Python'

單個字符還能與數值完成互轉,內置函數ord轉換單個字符爲整型,chr函數轉換整數爲單個字符:

In [35]: ord('振')
Out[35]: 25391
In [36]: chr(25391)
Out[36]: '振'

還能使用bytes函數將字符串轉爲字節類型(bytes),使用str函數轉化字節類型爲字符串:

s = 'python'
sa = bytes(s,encoding='utf-8')
s = str(sa,encoding='utf-8')

4 字符串打印及格式化

常規打印一個字符串比較簡單,如果打印字符串中含有變量,該怎麼正確打印。一般有兩種方法:

  1. 使用 format 函數

字符串變量使用一對花括號{}, format 參數中指定變量的取值:

>>> print("i am {0},age {1}".format("tom",18))
i am tom,age 18
  1. f打印

f 後面緊跟一個字符串,其中花括號{}中直接寫出變量名稱,顯然這種含有變量的打印方法更加符合大多數人的習慣:

In [45]: tom = 'tom'
In [46]: age = 18
In [47]: print(f'i am {tom}, age {age}')
i am tom, age 18

除了知道如何打印字符串,還有一項重要的事:如何控制字符串的打印。

雖然這是一個非常小的功能,但是知道一些常見的控制方法,卻能使得書寫更加簡潔。常見的控制打印用法:

輸出中如何控制保留兩位小數,整數補零填充,對齊,百分比格式打印,整數太長使用科學計數法打印等等。可以記住如下7種常見用法:

(1). 保留小數點後兩位

# 1 保留小數點後兩位
>>> print("{:.2f}".format(3.1415926)) 
3.14

(2). 帶符號保留小數點後兩位

>>> print("{:+.2f}".format(-1)) 
-1.00

(3). 不帶小數位

>>> print("{:.0f}".format(2.718)) # 不帶小數位
3

(4). 整數補零,填充左邊, 寬度爲3

>>> print("{:0>3d}".format(5)) # 整數補零,填充左邊, 寬度爲3
005

(5). 以逗號分隔的數字格式

>>> print("{:,}".format(10241024)) # 以逗號分隔的數字格式
10,241,024

(6). 百分比格式

>>> print("{:.2%}".format(0.718)) # 百分比格式
71.80%

(7). 指數記法

>>> print("{:.2e}".format(10241024)) # 指數記法
1.02e+07

5 字符串常見處理操作

字符串對應Python中的 str 類型,其內置封裝的方法有幾十個,下面列舉一些常用的必知的用法。

join 串聯多個字符串,注意Python中沒有單個字符這種類型,單個字符在Python中也會被當作str類型。如下連接多個字符串,最終打印出 Python串:

chars = ['P', 'y', 't', 'h', 'o', 'n']
name = ''.join(chars)

既然有串聯字符串,就應該有相反的操作:分割字符串,一般使用split函數,第一個參數指明分割字符串使用的分割符:

In [49]: 'col1,col2,col3'.split(',')
Out[49]: ['col1', 'col2', 'col3']

split還有第二個參數指明需要做的分割次數,比如只做一次分割,得到如下兩個元素:

In [51]: 'col1,col2,col3'.split(',',1)
Out[51]: ['col1', 'col2,col3']

split默認是從左側開始分割字符串,與之對應的另一個函數rsplit就是從右側開始分割字符串,某些場景rsplit函數更好用一些。從右側開始只做一次分割可以寫爲:

In [52]: 'col1,col2,col3'.rsplit(',',1)
Out[52]: ['col1,col2', 'col3']

除了以上兩個常用的方法,還有replace,startswith,strip,lstrip等等經常也會用到,在此不再一一舉例。

以上就是字符串處理的基本用法專題,主要總結了:

  • 1 字符串創建

  • 2 \ 轉義

  • 3 字符串與數字

  • 4 字符串打印及格式化

  • 5 字符串常見處理操作

最後,以一個更有意思的小功能作爲本專題的收尾。

已知下面一個長句,將其轉化爲多行,每行只有11個字符。

words = '是想與朋友們分享一個再普通不過的道理:腳踏實地做些實事,哪怕是不起眼的小事,每天前進一點,日積月累會做出一點成績的。'

藉助內置的textwrap模塊中fill方法,實現每行11個字符:

import textwrap
r = textwrap.fill(words,11)
print(r) 

結果:

是想與朋友們分享一個再
普通不過的道理:腳踏實
地做些實事,哪怕是不起
眼的小事,每天前進一點
,日積月累會做出一點成
績的。

送 2 本書:Python數據分析與挖掘實戰,最走心留言送1本,點贊最多送1本。後面凡是專題類文章都會送幾本書,歡迎朋友們星標振哥的公衆號,多多留言與振哥互動,根據最新推送規則你會第一時間收到推文。點擊瞭解此書詳情:

Python數據分析與挖掘實戰(第2版)

此書簡介:暢銷書全新升級,第1版銷售超過10萬冊,被國內100餘所高等院校採用爲教材,同時被廣大數據科學工作者奉爲經典,是該領域公認的事實標準。作者在大數據挖掘與分析等領域有10餘年的工程實踐、教學和創辦企業的經驗,不僅掌握行業的技術和實踐方法,而且洞悉學生和老師的需求與痛點。


原創不易,最後希望朋友們能點個在看或分享朋友圈支持振哥,叫我更有動力寫好下一篇專題。

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