迷你課程:Python-1~字串操作與格式化

Quick look

在 Python 中,字串 (string) 是最常用的資料類型之一。掌握字串的基本操作和進階技巧,不僅能讓你的程式碼更簡潔,也能提升程式設計的靈活性。本文將基於範例程式碼進一步詳細講解,並延伸至更多實用的字串操作和格式化方法。


輸出

print("Hello, World!")

這是 Python 中最基本的輸出語句,用於在terminal (終端) 顯示文字。


字串格式化

Python 3.6 版之後引入f-string的格式化方式,語法簡潔易懂。

name = "Micha"
print(f"Hello, {name}!") 

格式化數字

可以針對一串數字中間加逗號,對一些需要這樣處理的數字很方便。

z = 1234567
print(f"{z:,}")  # 輸出: 1,234,567

保留小數位數

z = 1234.56789
print(f"{z:.2f}")  # 輸出: 1234.57

跳脫字符

print("She said, \"Hello!\"")  # 使用 \\ 處理雙引號
#>>>
She said, "Hello!"

活用print()

要輸出的字可以在print()內用+號來結合:

print('Hello'+'Micha') 
#>>>
HelloMicha

但我們發現到兩個字串連在一起,這是因為+會默認中間沒有空格,所以這樣的情況下應該要:

print('Hello '+'Micha') 

如果不要用+,可以直接使用,,這樣就不會默認中間沒有空格:

print('Hello','Micha') ##輸出Hello Micha

當然,我們可以在print()內修改參數,讓上面的輸出沒有空格:

print('Hello','Micha', sep='') ##輸出HelloMicha

這是因為print() default中設定sep=’ ‘,所以平時用逗號分割時中間會有空格。


換行

如果我們希望Micha出現在下一行該怎麼做? 第一種最簡單的做法:

print('Hello')
print('Micha')

這是因為print() default 會有一個參數end = '\n',所以只要每一行都輸入print(),輸出就會分行。但這樣會增加代碼的行數,如果我們想要縮成一行該怎麼做?可以在中間插入\n

print('Hello \nMicha') #輸出會跟上面一樣

使用者輸入

使用 input() 函數接受使用者輸入:

name = input("What's your name? ")
print(f"Hello, {name}!")

萬一使用者不小心輸入多餘的空格,我們可以用strip()來處理:

name = name.strip()  # 去除前後空白

輸入字母大寫

可以針對輸入的字串做大寫轉換:

name = "micha"
print(name.capitalize()) #輸出Micha

但如果想要輸入的多個字串都大小開頭,需要使用title()

name = "micha wu"
print(name.title()) #輸出Micha Wu

整合處理

name = input("What's your name? ").strip().title()
print(f"Hello, {name}!")

自串分割

分割字串: 使用 split() 方法將字串分割為多個部分:

full_name = "Micha Wu"
first, last = full_name.split(" ")
print(first)  # 輸出: Micha
print(last)   # 輸出: Wu

合併字串

使用 join() 方法將列表中的元素合併為字串:

words = ["Hello", "World"]
sentence = " ".join(words)
print(sentence)  # 輸出: Hello World

替換字串

text = "I love Micha!"
print(text.replace("Micha", "Red Bean"))  # 輸出: I love Red Bean!

搜尋字串

text = "I love Micha!"
print(text.find("Micha"))  # 輸出: 7 (Micha 的起始位置)

其他搭配

字串的操作還可以搭配isdigit()isalpha()isspace()等,讓字串的操作更為靈活。


課程小結

功能操作方法範例輸出
基本輸出print()print("Hello, World!")Hello, World!
格式化字串f-stringname = "Micha"
print(f"Hello, {name}!")
Hello, Micha!
數字加逗號f-string 加千分位分隔符z = 1234567
print(f"{z:,}")
1,234,567
保留小數位數f-string 保留小數點後兩位z = 1234.56789
print(f"{z:.2f}")
1234.57
跳脫字符使用 \ 處理特殊字符print("She said, \"Hello!\"")She said, "Hello!"
字串拼接+, 進行字串拼接print('Hello '+'Micha')
print('Hello', 'Micha')
Hello Micha
字串合併join()words = ["Hello", "World"]
sentence = " ".join(words)
print(sentence)
Hello World
換行輸出\n 或多次 print()print('Hello \nMicha')Hello
Micha
用戶輸入input()name = input("What's your name? ")
print(f"Hello, {name}!")
根據使用者輸入
去除空白strip()name = " Micha "
print(name.strip())
Micha
首字母大寫capitalize()name = "micha"
print(name.capitalize())
Micha
標題格式化title()name = "micha wu"
print(name.title())
Micha Wu
分割字串split()full_name = "Micha Wu"
first, last = full_name.split(" ")
MichaWu
替換字串replace()text = "I love Micha!"
print(text.replace("Micha", "Red Bean"))
I love Red Bean!
搜尋字串find()text = "I love Micha!"
print(text.find("Micha"))
7
檢查字串內容isdigit(), isalpha(), isspace()s = "12345"
print(s.isdigit())
True
整合處理strip() + title()name = input("What's your name? ").strip().title()
print(f"Hello, {name}!")
格式化的用戶輸入結果
Yang-Hong Dai 戴揚紘
Yang-Hong Dai 戴揚紘
主治醫師

我的研究興趣為結合數據分析來探討各種癌症生物學。

comments powered by Disqus