在資料處理的過程中,我們最常會面對的不外乎四種類型
因此接下來幾天會稍微針對這些資料的基本操作和認知稍微談一下
+
或*
s1 = "pui"
print(s1 + "~") # 字串加法為前後相接
print(s1 * 3) # 字串乘法為重複n次
輸出:
pui~
puipuipui
%
如果有寫過C語言的讀者應該對這個符號不陌生,這是個用來控制格式化輸出的符號,在原始字串中透過不同的標記來達成不同輸出格式的結果,常用的格式化符號為:
%d
:替換掉一個整數
%03d
:替換掉一個整數,且往前補0到3位為止(超過不影響)%f
:替換掉一個浮點數(小數)
%.2f
:替換掉一個浮點數,且四捨五入到小數點後第2位%s
:替換掉另一個字串print("熱愛%d度的你" % 105) # 取代一個整數
print("%f四捨五入後是%.2f" % (1.234, 1.234)) # 有多個地方需要取代的時候需要用()起來
print("這是一顆%s" % "蘋果")
輸出:
熱愛105度的你
1.234000四捨五入後是1.23
這是一顆蘋果
.format()
雖然使用%
來格式化字串可以非常清楚的看出要替換掉的格式
但是對於要放什麼變數表示什麼意思進去則比較不具備可讀性
因此這邊提供了另一種方法來在格式化字串的過程中就可以在中間標記不同替換位置的意義
print("熱愛{temperature}度的你".format(temperature=105)) # 用{}包一個名稱,format後面給這個名稱的值
print("{a}四捨五入後是{a:.2f}".format(a=1.234)) # 可以和%一樣指定格式
print("這是一顆{}".format("蘋果")) # {}內沒名稱的話就是按順序對應
輸出:
熱愛105度的你
1.234四捨五入後是1.23
這是一顆蘋果
而在python3.6之後,又出現了一個更加方便的用法
不用另外再對字串設定一個替換掉的名稱,直接使用原本存在的變數即可
而格式方面也一樣可以調整哦
temperature = 105
a = 1.234
b = "蘋果"
print(f"熱愛{temperature}度的你") # 字串前面加f,中間用{}包變數名稱
print(f"{a}四捨五入後是{a:.2f}") # 可以和%一樣指定格式
print(f"這是一顆{b}") # 但不能和format一樣名稱留空
輸出:
熱愛105度的你
1.234四捨五入後是1.23
這是一顆蘋果
有的時候我們需要在一個長的字串當中尋找我們的短字串是否被包含在裡面
這個時候根據我們是想要看它在不在或是看它出現在哪裡可以分別使用不同的工具
in
print("台灣" in "中國") # 這樣應該就不會被搬運過去了吧?
print("魷魚" in "魷魚遊戲")
輸出:
False
True
find
或rfind
s2 = "一隻綿羊兩隻綿羊三隻綿羊"
print("第1隻綿羊在", s2.find("綿羊")) # 回傳的是開頭的index
print("最後1隻綿羊在", s2.rfind("綿羊")) # rfind從右邊開始找
print(s2[2:4])
print(s2[10:10+len(s2)])
輸出:
第1隻綿羊在 2
最後1隻綿羊在 10
綿羊
綿羊
有的時候我們也需要對字串去進行分割或是合併的處理——其實之前講過的csv格式也可以直接一行一行讀進來之後這樣處理哦~
.split()
s3 = "1989-06-04" # 一時想不到其他例子,再用個防盜例子
date_list = s3.split("-")
date_list
輸出:
['1989', '06', '04']
.join()
"/".join(date_list) # 把前面的字串放在後面list的每個元素中間
輸出:
'1989/06/04'
雖然今天講的主要是對於python字串的一些基本處理語法,但也就順便點一下關於我們要如何看待文字資料這件事情
這邊就先簡單提及一下,希望對於初接觸這塊的讀者們可以在做這些基本處理的過程中就能對後續文字分析可能會遇到的問題先想看看~