更新於 2024/12/11閱讀時間約 6 分鐘

Python 程式札記 : 正則表達式與 JSON 處理

在 Python 中,正則表達式和 JSON 處理,能幫我們有效率的處理文本數據,本文將介紹如何使用正則表達式進行文本分析,以及如何處理和操作JSON數據。

正則表達式

正則表達式可以用來查找、替換或驗證文本模式,它使用特定的語法找出文本中的特定模式。在Python中,則是使用re模組來進行正則表達式的操作。

import re

#尋找文本
text1 = "學習Python正則表達式"
match = re.search("Python", text1)
if match:
print("找到匹配:", match.group()) # 找到匹配: Python

#分割字符串
text2 = "Python,Java,C++"
languages = re.split(r',', text2)
print(languages) # ['Python', 'Java', 'C++']

#替換文本
text3 = "Python 是一種程式語言"
new_text = re.sub(r'Python', 'Java', text3)
print(new_text) # Java 是一種程式語言

常見的正則表達式語法

1. 萬用字元

  • .:比對任意字元。範例:'A.B' 匹配 'ACB', 'ADB' 等。

2. 定位符號

  • ^:比對開頭位置。範例:'^Hello' 匹配以 'Hello' 開頭的字符串。
  • $:比對結尾位置。範例:'end$' 匹配以 'end' 結尾的字符串。

3. 量詞符號

  • *:比對前一個字元 0 到多次。範例:'A*' 匹配 'AAA', 'AA', 'A', 甚至是空字符串。
  • ?:比對前一個字元 0 到 1 次。範例:'A?' 匹配 'A' 或空字符串。
  • +:比對前一個字元 1 到多次。範例:'A+' 匹配 'A', 'AA', 'AAA' 等。
  • {m}:比對前一個字元嚴格 m 次。範例:'A{3}' 僅匹配 'AAA'
  • {m,n}:比對前一個字元嚴格 m 到 n 次。範例:'A{1,3}' 匹配 'A', 'AA', 'AAA'
  • {m,n}?:比對前一個字元嚴格 m 到 n 次,盡量取少。範例:'A{1,3}?' 匹配 'A',而非 'AA''AAA'

4. 分組和範圍

  • ():小括號括住的地方設定為一個分組。範例:'(AB)' 匹配 'AB' 並將其作為一個分組。
  • []:字元集,能表示一定範圍的字元集合。範例:'[A-C]' 匹配 'A', 'B', 'C'

5. 特殊字元和邏輯運算

  • \:正則表達式用的跳脫字元。範例:'\.' 匹配實際的 '.' 字元。
  • |:邏輯中的“或”,比對多個選項中的任一個。範例:'A|B' 匹配 'A''B'
  • \w:比對字母數字及底線。範例:'\w' 匹配 'A', 'b', '1', '_' 等。
  • \W:比對除了字母數字及底線外的字元。範例:'\W' 匹配如 '!', '@', '%' 等。
  • \d:比對數字。範例:'\d' 匹配 '0', '1', '2' 等。
  • \D:比對除了數字外的字元。範例:'\D' 匹配如 'A', 'b', '!' 等。

JSON 處理

JSON是一種數據交換格式,易於閱讀和編寫,也易於程式解析和生成。Python 中的 json 模組提供了處理 JSON 數據的方法。處理 JSON 數據時,最常見的錯誤之一是在讀取或寫入文件時的編碼問題,特別是在處理不同語言環境下的數據時。

import json

# 解析 JSON
json_string1 = '{"name": "Tom", "age": 30, "city": "New York"}'
data1 = json.loads(json_string1)
print(data1) # {'name': 'Tom', 'age': 30, 'city': 'New York'}

# 生成 JSON
data2 = {
"name": "Tom",
"age": 30,
"city": "New York"
}
json_string2 = json.dumps(data2)
print(json_string2) # {'name': 'Tom', 'age': 30, 'city': 'New York'}

😊 感謝你的耐心閱讀,若是你喜歡這篇內容,可以透過以下方式表達你的喜歡 😊

❤️按個愛心|💬留言互動|🔗分享此文|📌追蹤阿梧|☕請喝咖啡

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.