使用通配符來匹配字串:
使用
fnmatch.filter()
方法從清單中取得符合模式的字串。使用
fnmatch.fnmatch()
方法檢查字串是否與模式相符。
import fnmatch a_list = ['fql.txt', 'jiyik.txt', 'com.csv'] pattern = '*.txt' filtered_list = fnmatch.filter(a_list, pattern) print(filtered_list) # ????️ ['fql.txt', 'jiyik.txt']
如果我們更願意使用正規表示式,請向下捲動到下一個副標題。
fnmatch.filter
方法接受一個可迭代物件和一個模式,並傳回一個新列表,該列表僅包含與提供的模式相符的可迭代物件元素。
範例中的模式以任一或多個字元開頭,以 .txt
結尾。
範例中的模式僅包含一個通配符,但您可以根據需要使用任意多個通配符。
請注意,星號
*
符合所有內容(一個或多個字元)。
如果要匹配任何單個字符,請將星號 *
替換為問號 ?
。
*
符合所有內容(一個或多個字元)?
符合任何單一字元[sequence]
匹配序列中的任意字元[!sequence]
符合任何不按順序的字元
下面是使用問號來匹配任何單一字元的範例。
import fnmatch a_list = ['abc', 'abz', 'abxyz'] pattern = 'ab?' filtered_list = fnmatch.filter(a_list, pattern) print(filtered_list) # ????️ ['abc', 'abz']
此模式符合以 ab 開頭後接任何單一字元的字串。
如果要使用通配符檢查字串是否與模式匹配,請使用 fnmatch.fnmatch()
方法。
import fnmatch a_string = '2023_jiyik.txt' pattern = '2023*.txt' matches_pattern = fnmatch.fnmatch(a_string, pattern) print(matches_pattern) # ????️ True if matches_pattern: # ????️ this runs print('The string matches the pattern') else: print('The string does NOT match the pattern')
該模式以 2023 開頭,後面跟著任意一個或多個字符,並以 .txt 結尾。
fnmatch.fnmatch
方法接受一個字串和一個模式作為參數。如果字串與模式匹配,則該方法傳回 True,否則傳回 False。只需將星號*
替換為問號?
如果您想匹配任何單一字元而不是任何一個或多個字元。
或者,我們可以使用正規表示式。
使用正規表示式使用通配符來匹配字串
使用通配符來匹配字串:
使用re.match()
方法檢查字串是否符合給定的模式。使用 .*
字元代替萬用字元。
import re a_list = ['2023_fql.txt', '2023_jiyik.txt', '2023_com.csv'] regex = re.compile(r'2023_.*\.txt') list_of_matches = [ item for item in a_list if re.match(regex, item) ] print(list_of_matches) # ????️ ['2023_fql.txt', '2023_jiyik.txt']
re.compile
方法將正規表示式模式編譯成一個對象,該物件可用於使用其match()
或search()
方法進行比對。
這比直接使用 re.match
或 re.search
更有效,因為它保存並重複使用了正規表示式物件。
正規表示式以 2023_ 開頭。
正規表示式中的
.*
字元用作符合任何一個或多個字元的通配符。
點
.
符合換行符號以外的任何字元。星號
*
與前面的正規表示式(點.
)符合零次或多次。
我們使用反斜線\字元來轉義點。在副檔名中,因為如我們之前所看到的,點
.
在正規表示式中使用時具有特殊意義。換句話說,我們使用反斜線來處理點。作為文字字元。
我們使用列表理解來迭代字串列表。
清單推導用於對每個元素執行某些操作或選擇滿足條件的元素子集。
在每次迭代中,我們使用 re.match()
方法檢查目前字串是否與模式相符。
import re a_list = ['2023_fql.txt', '2023_jiyik.txt', '2023_com.csv'] regex = re.compile(r'2023_.*\.txt') list_of_matches = [ item for item in a_list if re.match(regex, item) ] print(list_of_matches) # ????️ ['2023_fql.txt', '2023_jiyik.txt']
如果提供的正規表示式在字串中匹配,則 re.match
方法傳回一個匹配物件。
如果字串與正規表示式模式不匹配,則
match()
方法傳回 None。
新清單僅包含原始清單中與模式相符的字串。
如果只想匹配任何單個字符,請刪除點後面的星號 *.
在正規表示式中。
import re a_list = ['2023_a.txt', '2023_bcde.txt', '2023_z.txt'] regex = re.compile(r'2023_.\.txt') list_of_matches = [ item for item in a_list if re.match(regex, item) ] print(list_of_matches) # ????️ ['2023_a.txt', '2023_z.txt']
點 .
符合換行符號以外的任何字元。
透過使用點
.
在不轉義的情況下,正規表示式符合任何以2023_ 開頭,後面跟著任何單一字元並以.txt 結尾的字串。
如果大家在閱讀或寫正規表示式時需要協助,請參考我們的正規表示式教學。
該頁麵包含所有特殊字元的清單以及許多有用的範例。
如果想使用正規表示式檢查字串是否與模式匹配,我們可以直接使用 re.match()
方法。
import re a_string = '2023_fql.txt' matches_pattern = bool(re.match(r'2023_.*\.txt', a_string)) print(matches_pattern) # ????️ True if matches_pattern: # ????️ this runs print('The string matches the pattern') else: print('The string does NOT match the pattern')
如果字符串与模式匹配,则
re.match()
方法将返回一个匹配对象,如果不匹配,则返回 None 。
我们使用 bool()
类将结果转换为布尔值。
如果要对单个字符使用通配符,请删除星号 *
。
import re a_string = '2023_ABC.txt' matches_pattern = bool(re.match(r'2023_.\.txt', a_string)) print(matches_pattern) # ????️ False if matches_pattern: print('The string matches the pattern') else: # ????️ this runs print('The string does NOT match the pattern')
请注意
,点.
我们没有使用反斜杠作为前缀用于匹配任何单个字符,而点.
我们以反斜杠 \ 为前缀的被视为文字点。
示例中的字符串与模式不匹配,因此 matches_pattern
变量存储一个 False 值。
以上是Python中如何使用通配符來匹配字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)