Python - Unicode系統

你好,未來的Python巫師們!今天,我們將進入Python中Unicode的世界,展開一段激動人心的旅程。如果你從未聽過Unicode,也別擔心 – 當你完成這個教學後,你將能像專家一樣處理文本!

Python - Unicode System

什麼是Unicode系統?

想象一下,你想給你在日本的筆友寫封信,但你的鍵盤只有英文字母。很沮喪對吧?這就是Unicode出場救援的地方!

Unicode就像一本巨大的字典,為世界上每個語言系統中的每個字符分配了一個唯一的數字(稱為代碼點)。它不僅僅是關於字母和數字 – 還包括標點符號、符號,甚至表情符!?

例如:

  • 字母 'A' 的代碼點是 U+0041
  • 符號 '©' 的代碼點是 U+00A9
  • 表情符 '?' 的代碼點是 U+1F60A

為什麼我們需要Unicode?

在Unicode出現之前,不同的語言使用不同的編碼系統,這往往導致在不同的計算機系統之間共享數據時出現混淆和錯誤。Unicode通過提供一個通用標準解決了這個問題。

字符編碼

現在我們知道了Unicode是什麼,來談談字符編碼。將其視為將那些Unicode代碼點翻譯成計算機可以存儲和處理的格式的過程。

UTF-8:最常見的編碼

UTF-8是最廣泛使用的編碼系統。它像是一個聰明的打包系統,可以表示所有Unicode字符,同時與ASCII(一個較舊的編碼系統) 向後兼容。

讓我們看看Python如何處理UTF-8:

# 將字符串編碼為UTF-8
text = "Hello, 世界!"
encoded_text = text.encode('utf-8')
print(encoded_text)  # b'Hello, \xe4\xb8\x96\xe7\x95\x8c!'

# 將UTF-8解碼回字符串
decoded_text = encoded_text.decode('utf-8')
print(decoded_text)  # Hello, 世界!

在這個例子中,我們首先將我們的多語言字符串編碼為UTF-8。輸出中的 b 前綴表示它是一個字節對象。當我們將其解碼回來時,我們得到了原始字符串。

Python的Unicode支持

Python的一個優點是它對Unicode的出色支持。在Python 3中,所有字符串默認為Unicode。這意味著你可以自由地混合使用不同語言的字符,而無需任何特殊處理!

創建Unicode字符串

# 單純的Unicode字符串
hello_world = "Hello, 世界!"
print(hello_world)  # Hello, 世界!

# 使用Unicode轉義序列
smiley = "\U0001F60A"
print(smiley)  # ?

在第二個例子中,我們使用了一個Unicode轉義序列來表示表情符。\U 告訴Python後面跟著的是一個Unicode代碼點。

在Python中處理Unicode

讓我們探索一些更多的Unicode操作:

# 獲取字符的Unicode代碼點
print(ord('A'))  # 65
print(ord('世'))  # 19990

# 從Unicode代碼點獲取字符
print(chr(65))  # A
print(chr(19990))  # 世

# 字符串長度
mixed_string = "Hello, 世界!"
print(len(mixed_string))  # 9(註:世和界被計算為單個字符)

ord() 函數為我們提供了字符的Unicode代碼點,而 chr() 則相反。注意 len() 正確地計算中文字符為單個單位。

處理文件中的Unicode

當處理包含Unicode文本的文件時,記得指定編碼:

# 將Unicode寫入文件
with open('unicode_file.txt', 'w', encoding='utf-8') as f:
f.write("Hello, 世界!")

# 從文件讀取Unicode
with open('unicode_file.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)  # Hello, 世界!

通過指定 encoding='utf-8',我們確保Unicode文本正確地寫入並從文件中讀取。

Python中的Unicode方法

Python提供了許多用於處理Unicode字符串的有用方法。以下是一個總結一些方法的表格:

方法 描述 示例
isalpha() 如果字符串中的所有字符都是字母,則返回True "Hello".isalpha() # True
isnumeric() 如果字符串中的所有字符都是數字,則返回True "123".isnumeric() # True
isalnum() 如果字符串中的所有字符都是字母數字,則返回True "Hello123".isalnum() # True
islower() 如果字符串中的所有大寫字母字符都是小寫,則返回True "hello".islower() # True
isupper() 如果字符串中的所有大寫字母字符都是大寫,則返回True "HELLO".isupper() # True
istitle() 如果字符串是首字母大寫,則返回True "Hello World".istitle() # True

這些方法在需要驗證或分類Unicode字符串時特別有用。

結論

恭喜你!你剛剛走出了Python中Unicode的精彩世界的第一步。請記住,處理來自不同語言和系統的文本是我們互聯互通世界中的關鍵技能,而Python使這一切變得驚奇地簡單。

在你繼續Python的旅程中,你會發現這種對Unicode的理解在許多情況下都會派上用場,從網頁抓取到數據分析等等。不斷練習,很快你就會像真正的Python魅力者一樣操控表情符和奇特文字!?✨

Credits: Image by storyset