[Python]代替Re正則表達式來處理String 字串的簡單方法

閱讀時間約 8 分鐘

有別於正則表達式符號的難以理解,有其他簡單的方式也可以來處理字串的問題。

本文主要介紹其他方法用於處理字串,尋找字串中的關鍵字與其他操作。

[Python]Re正則表達式中常用符號的重點整理


字串方法(String Methods)

Python 提供了多種內建的字串方法,可以替代某些簡單的正則表達式功能。

  • str.find()str.index(): 查找字串中的位置。
    text = "Hello, world!"
    position = text.find("world")  # 返回符合 "world" 的起始索引
    print(f'找到的起始位置: {position}') # 找到的起始位置: 7
  • str.startswith() str.endswith(): 檢查字串是否以設定的字串開始或結束。
    text = "Hello, world!"
    result = text.startswith("Hello")  # 返回 True
    if result:
        print(f'從Hello開始') # 從Hello開始
  • str.replace(): 替換字串中的字元。
    text = "Hello, world!"
    new_text = text.replace("world", "Python") # 替換 "world" 為 "Python"
    print(new_text) # Hello, Python!
  • str.split() 和 str.join(): 分割和合併字串。
    text = "apple,banana,orange"
    fruits = text.split(",") # 分割為列表 ["apple", "banana", "orange"]
    print(fruits) #['apple', 'banana', 'orange']
  • str.count(): 計算字元在字串中出現的次數。
    text = "banana"
    count = text.count("a") # 返回 3
    print(count) #3​




Pandas

對於處理大量數據或更複雜的字串操作,Pandas 提供了很多功能。特別是 str 類方法,這些方法可以應用於整個 DataFrame Series

  • str.contains(): 檢查 Series 中每個元素是否包含特定的字串。
  • import pandas as pd
    df = pd.DataFrame({"text": ["apple", "banana", "cherry"]})
    #新增一列​命名contains_a,並將結果加在這一列上
    df["contains_a"] = df["text"].str.contains("a")
    #轉換回字典的形式
    df_dict = df.to_dict(orient="records")
    print(df_dict)
    # 輸出 [{'text': 'apple', 'contains_a': True}, {'text': 'banana', 'contains_a': True}, {'text': 'cherry', 'contains_a': False}]

df結果

資料更新,新增contains_a這一列包含是否包含'a'的結果。

     text  contains_a
0 apple True
1 banana True
2 cherry False

  • str.extract(): 提取匹配給定正則表達式。
  • import pandas as pd
    df = pd.DataFrame({"text": ["apple", "banana", "cherry"]})
    df["extracted"] = df["text"].str.extract(r"(a\w+)")
    #轉換回字典的形式
    df_dict = df.to_dict(orient="records")
    print(df)
  • str.extract(): 這是一個 pandas 提供的方法,用於從 Series 中的每個元素中提取匹配給定正則表達式的字串。它返回的是一個 DataFrame,即使只有一個提取的分組。
  • r"(a\w+)":
    • r"" 是用於表示原始字串(raw string)的前綴,這樣 Python 不會對字串中的反斜杠進行轉義處理。
    • (a\w+) 是一個正則表達式,其中:
      • a 匹配字母 "a"。\w+ 匹配緊跟在 "a" 後的一個或多個字母或數字(\w 匹配字母、數字和下劃線字符,+ 表示匹配一次或多次)。

df結果

     text extracted
0 apple apple
1 banana anana
2 cherry NaN

結果分析:

  • "apple": 提取到 "apple" 中的 "a" 和後續的 "pple",結果為 "apple"。
  • "banana": 提取到 "anana",因為這是第一個 "a" 開始後的匹配。
  • "cherry": 不包含字母 "a",因此結果為 NaN(無匹配結果)。

List Comprehensions 串列生成式

對於簡單的匹配和替換操作,串列生成式可以非常直觀。

  • 過濾列表中的元素:
    words = ["apple", "banana", "cherry", "date"]
    filtered = [word for word in words if "a" in word] # 包含 "a" 的單詞

    print(filtered) #輸出 ['apple', 'banana', 'date']
  • 修改列表中的元素:
    words = ["apple", "banana", "cherry", "date"]
    modified = [word.upper() for word in words]  # 將所有單詞轉為大寫

    print(modified) #輸出 ['APPLE', 'BANANA', 'CHERRY', 'DATE']



總結

  • 正則表達式仍然是非常強大的工具,尤其是在處理複雜模式匹配時。但在簡單的情況下,使用內建的字串方法或其他專用工具會更直接且可讀性更高。
  • 工具選擇應基於具體需求:如果操作相對簡單且頻繁執行,內建方法往往更高效。如果需求複雜,可以考慮正則表達式或其他更高級的工具。



119會員
200內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
紀錄一些,實用的re正則表達式需要用時,就可以直接複製貼上。 檢查是否有中文字
當使用正則表達式(Regular Expressions, Regex)時,不同的符號和構造具有特定的含義,這些符號和模式可以用來構建靈活且強大的文本匹配規則。 以下是正則表達式中常用符號的重點整理: 字元類別 (Character Classes) [abc]: 匹配 a、b 或 c 中
re 模組基本介紹 re 模組是 Python 用來處理正則表達式的標準模組。 正則表達式是一種用於描述字串模式的語法,可以用來匹配、搜尋、分割和替換字串中的特定模式。
呈上篇[Python基礎]類別繼承(Inheritance) 中使用的super()並加以說明,此篇文章主要敘述使用super()有什麼好處及優點。 super():是一個內建函數,用來返回父類別的物件,以便你可以使用這個物件來呼叫父類別的方法或屬性。 這種做法的目的是在子類別中繼承並延續父類別
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
在 Python 中,tuple 與 List有一個關鍵的不同點:tuple 是不可變的,這意味著一旦創建了 tuple,就無法更改其內容。 這與 List的可變性形成了對比,list 可以新增、刪除或修改元素。 元素的意思: 元素:指的是 List 中的每一個獨立的項目或值。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
先來名詞解釋jython跟JES: jython是一種實現了Python語言的Java平台版本的解釋器。它允許開發人員在Java虛擬機(JVM)上運行Python代碼,從而實現了Python語言與Java平台的無縫集成。 JES(Jython Environment for Students)是
Thumbnail
ETL是資料倉儲領域中一個重要的概念,全稱為Extract-Transform-Load,中文可譯為"抽取-轉換-載入"。ETL的作用是將來自不同來源的資料抽取出來,經過清理、轉換、整合等處理後,最終將處理好的資料載入到資料倉儲或其他單一的資料存放區
在求學階段,你已經對代數的計算熟到不能再熟,所以變數(variable)對你來說應該不至於太陌生,先來看看以下這個例子:   
Thumbnail
使用Python開發後端API的經驗中應該會常常看到WSGI與ASGI這兩個名詞, 兩者的差異究竟是什麼呢? 就讓我們來為您科普一番。 什麼是WSGI 全名為「Web Server Gateway Interface」 Web伺服器閘道介面,主要規範HTTP請求如何與伺服器溝通, 通
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
先來名詞解釋jython跟JES: jython是一種實現了Python語言的Java平台版本的解釋器。它允許開發人員在Java虛擬機(JVM)上運行Python代碼,從而實現了Python語言與Java平台的無縫集成。 JES(Jython Environment for Students)是
Thumbnail
ETL是資料倉儲領域中一個重要的概念,全稱為Extract-Transform-Load,中文可譯為"抽取-轉換-載入"。ETL的作用是將來自不同來源的資料抽取出來,經過清理、轉換、整合等處理後,最終將處理好的資料載入到資料倉儲或其他單一的資料存放區
在求學階段,你已經對代數的計算熟到不能再熟,所以變數(variable)對你來說應該不至於太陌生,先來看看以下這個例子:   
Thumbnail
使用Python開發後端API的經驗中應該會常常看到WSGI與ASGI這兩個名詞, 兩者的差異究竟是什麼呢? 就讓我們來為您科普一番。 什麼是WSGI 全名為「Web Server Gateway Interface」 Web伺服器閘道介面,主要規範HTTP請求如何與伺服器溝通, 通
想要開始Python語言的開發環境,有兩種常見方式,一種是下載安裝到本機端,另一種是直接在雲端執行。本文將介紹三個常見的開發工具及其安裝步驟。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表