[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']



總結

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



留言
avatar-img
留言分享你的想法!
螃蟹_crab-avatar-img
發文者
2024/08/19
[Python]幾種去除字串中的空白字元的方法提及了這篇文章,趕快過去看看吧!
avatar-img
螃蟹_crab的沙龍
147會員
261內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2024/09/14
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
Thumbnail
2024/09/14
生成器表達式是 Python 中一種更簡潔的語法,專門用來創建生成器。它的語法與列表生成式類似,但將列表生成式中的方括號 [] 替換為小括號 ()。生成器表達式與生成器函數類似,具有「惰性評估」的特性,因此它只在需要時才生成元素,從而節省記憶體。 生成器的「惰性評估」(也叫延遲求值)指的是生成器不
Thumbnail
2024/09/01
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
Thumbnail
2024/09/01
包含著日期型資料在許多不同領域的分析中都非常重要,特別是當數據涉及隨時間變化的趨勢、模式或週期時,例如房價,股票價格分析等等。 如何將一個日期欄位改為 DataFrame 的索引,你可以使用 set_index() 方法。 實作範例數據來源 處理步驟 確保日期欄位是 datetime
Thumbnail
2024/09/01
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部
Thumbnail
2024/09/01
為了讓資料更適合進行後續的分析、建立模型,模型的決策準確性,資料探索與清理是資料分析過程中非常重要的步驟,主要目的在於確保資料的品質和可靠性。 因為前幾篇的例子中的資料,並沒有缺失值與重複值的部分,我另外找了一份有包含的資料來做案例分析,由於找到的資料沒有重複值的部分,故本文主要解釋處理缺失值的部
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
註解 & Print & 變數型態
Thumbnail
註解 & Print & 變數型態
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News