最後更新日期:2022 年 01 月 9 日
Table of Contents
一、建立字串
在 Python 3 中,字串是一連串有序的 Unicode 字元,是的,與 Python 2 不同,Python3 預設的編碼就是 Unicode。
在 Python 中,字串可以被括在單引號 ( ‘ ) 中,或是雙引號 ( " ) 中,或是三引號 (""" 或 ”’) 中。
str1 = 'Hello World.\n'
str2 = "Hello World.\n"
str3 = '''\nThis is line one
this is line two.'''
使用單引號和雙引號並沒有任何區別,只是看你的使用習慣而已,其中的特殊字元都會被轉義,除非你特別指定該字串不轉義。
被三引號括住的稱為 docstrings,因為它們主要用於說明函式的用途。
被單引號和雙引號所括住的字串無法跨越多列,我們必須在同一列中以對應的引號結束字串,但 docstrings 可以跨越多列。
引號的混用有時會造成一些困擾,我們可以參考 PEP 8 及 PEP 257 的指導方針來使用會比較好一點。
二、常用的字串函式
print() 印出字串
a = 'apple'
b = "banana"
c = '''cherry'''
# 格式化輸出
print("There are %d fruits in the basket: %s, %s, %s" % (3, a, b, c))
print("%8d" % (1234)) # 寬度 8,靠右對齊
print("%-8d" % (1234)) # 寬度 8,靠左對齊
print("%08d" % (1234)) # 寬度 8,靠右對齊,空格補 0
print("%8s" % ("ABCDEF")) # 寬度 8,靠右對齊
print("%5s" % ("ABCDEF")) # 寬度 5,超過全顯示
print("%5.3s" % ("ABCDEF")) # 寬度 5,超過只顯示 3 個
print("%d" % (15))
print("%o" % (15))
print("%#o" % (15))
print("%x" % (15))
print("%#x" % (15))
len()-取得字串的長度
str1 = 'Hello'
print(len(str1))
str()-強制轉換型別為字串
Python 不會自動轉換型別,所以有時我們必須手動操作
str(99.8) # "99.8"
str(True) # "True"
price = 50
print(price) # 這樣 ok
print("Price: ", price) # 這樣也行
print("Price: " + str(price)) # 必須轉換型別
print("Price: " + price) # 這樣會有錯誤,因為字串連結運算子只能用在字串型別
三、字串物件可以使用的方法
在 Python 中,所有的資料型態都是物件,可以使用其對應的物件方法
str1 = " TexT " # 前後都有空白
# 去除掉前後的空白,
str1.strip()
# 去除掉左邊的空白
str1.lstrip()
# 去除掉右邊的空白
str1.rstrip()
# 找到出現 ex 的位置
str1.find('ex')
# 全轉為大寫
str1.upper()
# 全轉為小寫
str1.lower()
# 大小寫互換
str1.swapcase()
# 首字大寫
str1.capitalize() # 這不會作用,因為首字為空白
str1.strip().capitalize() # 必須先去除空白
# 字串取代
str2 = 'Hello world'
str2.replace('world', 'python')
四、字串的部份取值-slice
索引運算子(Index Operator)-取出指定位置的字元
字串可以被視為一種串列 (List),所以可以迭代它;也可以使用「[ ]」索引運算子取出指定位置的字元
letters = "abcdefghijklmnopqrstuvwxyz"
print(letters[1]) # 印出 b
str1 = 'Hello'
for c in str1:
print(c)
# 也會印出 Hello
print(str1[0])
print(str1[1])
print(str1[2])
print(str1[3])
print(str1[4])
# 還是會印出 Hello
print(str1[-5])
print(str1[-4])
print(str1[-3])
print(str1[-2])
print(str1[-1])
切片運算子 (Slicing Operator)-取出指定位置範圍的字串
letters = "abcdefghijklmnopqrstuvwxyz"
print(letters[1:4]) # 印出 bcd
參考:
https://runestone.academy/ns/books/published//fopp/Sequences/TheSliceOperator.html
五、字串的組合與分割
基本的組合方式
letters = "abc" + "def" # "abcdef"
letters = "abc" + str(123) # "abc123",數字型別必須轉換為字串
letters = "abc" * 3 # "abcabcabc"
.join()-將串列合併為字串
還可以像 PHP 的 implode
fruits = ['apple', 'banana', 'cherry']
str1 = ' '.join(fruits) # 使用空白將字串組合
print(str1) # 'apple banana cherry'
'-'.join(fruits) # 使用 - 將字串組合
print(str2) # 'apple-banana-cherry'
.split()-將字串切為串列 (List)
這有點像 PHP 的 explode,可以將字串依特定的分隔字元切分成字串組成的串列 (List)
str1 = "apple banana cherry"
list1 = str1.split() # 預設的分隔字元是空白
print(list1) # ['apple', 'banana', 'cherry']
str2 = "apple, banana, cherry"
list2 = str2.split(',')
print(list2) # ['apple', ' banana', ' cherry'] 注意!字串裏有空白
list3 = str2.split(', ')
print(list3) # ['apple', 'banana', 'cherry']
https://stackoverflow.com/questions/3854867/what-is-for-python-what-explode-is-for-php
Comments