Python 字串是表示資訊或資料的字元序列。普通字串可以包含用單引號或雙引號括起來的各種字符,但字母數字字串僅包含數字和字母。 字母數字和非字母數字字串都在各種場景中使用和應用,包括密碼保護、資料處理和驗證、格式化等。
可以識別和提取特定模式。我們也可以使用這些類型的字串提供不同的組合。我們將根據這些字串執行操作。我們的任務是提取字串,直到遇到第一個非字母數字字元。
在遇到非字母數字字元之前,我們必須從原始字串中提取子字串。讓我們透過一個例子來理解這一點。
讓我們考慮一個具有以下值的字典 -
Input: Inp_STR = "Sales18@22!Roam"
給定的字串由字母、數字和特殊字元組成。一旦遇到非字母數字字符,我們就必須檢索子字串。
Output: Sales18
我們可以看到,從原始字串中返回了一個子字串“Sales18”,因為在此之後遇到了非字母數字字符,即“@”。現在我們已經理解了問題陳述,讓我們討論一些解決方案。
這是根據提供的條件提取字串的基本且更簡單的方法。我們將傳遞一個字串並創建一個新變量,該變量將儲存所有字母數字字符,即字母(大寫和小寫)和數字。之後,我們將遍歷原始字串並迭代每個字元。
我們將建立一個條件來檢查原始字串中的字元是否是字母數字。一旦遇到非字母數字字符,循環將中斷並返回子字串。
以下是提取字串直到第一個非字母數字字元的範例 -
Inp_STR = "Sales18@22Roam" print(f"The original string is: {Inp_STR}") ExSTR = "" alphaNum = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890" for x in Inp_STR: if x not in alphaNum: break else: ExSTR += x print(f"The extracted string till 1st Non-Alphanumeric character: {ExSTR}")
The original string is: Sales18@22Roam The extracted string till 1st Non-Alphanumeric character: Sales18
Regex 模組或「re」模組是一個強大的程式設計工具,用於搜尋和匹配模式。這些模式以獨特的表達式的形式傳遞。使用此模組,我們將檢測原始字串中的非字母數字模式並檢索第一次遇到的序列。我們使用「search()」函數在字串中搜尋由表達式「\W 」表示的非字母數字模式。
「\W」表示非字母數字類,「 」設定非字母數字字元的連續匹配邏輯。 “.start()”方法傳回符合子字串的起始索引,該索引值將用於檢索所需的子字串。
以下是一個範例 -
import re Inp_STR = "Sales18@22Roam" print(f"The original string is: {Inp_STR}") ExSTR = re.search(r"\W+", Inp_STR).start() print(f"The 1st non-alphanumeric character is encountered at: {ExSTR}") ExSTR = Inp_STR[ : ExSTR] print(f"The extracted string till 1st Non-Alphanumeric character: {ExSTR}")
The original string is: Sales18@22Roam The 1st non-alphanumeric character is encountered at: 7 The extracted string till 1st Non-Alphanumeric character: Sales18
這是提取字串直到遇到第一個非字母數字字元的另一種方法。在這個方法中,我們將使用 re 模組中的「findall()」函數來尋找所有出現的由字母數字字元組成的子字串。
將獲得匹配子字串的列表,我們將使用「0」索引值檢索第一個子字串。我們將使用正規表示式:“[\dA-Za-z]*”,它表示一行中的零個或多個字母數字字元。
正規表示式符號「\d」符合0到9之間的任何數字,「A-Z」符合A到Z之間的任何大寫字母,「 a-z< /b>” 符合a 到z 之間的任何小寫字母。
以下是一個範例 -
import re Inp_STR = "Sales18@22Roam" print(f"The original string is: {Inp_STR}") ExSTR = re.findall(r"[\dA-Za-z]*", Inp_STR)[0] print(f"The extracted string till 1st Non-Alphanumeric character: {ExSTR}")
The original string is: Sales18@22Roam The extracted string till 1st Non-Alphanumeric character: Sales18
在這個方法中,我們將迭代原始字串中每個字元的索引,並建立一個條件來檢查索引「x」處的字元是否不是字母數字。這是在「isalnum()」方法的幫助下完成的,該方法確定字串的字母數字性質。之後,我們將使用列表切片來提取字串,直到第一個字母數字字元。
以下是一個範例 -
Inp_STR = "Sales18@22Roam" print(f"The original string is: {Inp_STR}") for x in range(len(Inp_STR)): if not Inp_STR[x].isalnum(): ExSTR = Inp_STR[:x] print(f"The 1st non-alphanumeric character is encountered at: {x}") break else: ExSTR = Inp_STR print(f"The extracted string till 1st Non-Alphanumeric character: {ExSTR}")
The original string is: Sales18@22Roam The 1st non-alphanumeric character is encountered at: 7 The extracted string till 1st Non-Alphanumeric character: Sales18
在本文中,我們討論了一些高效且最佳化的解決方案,用於在遇到第一個非字母數字字元時從字串中提取子字串。我們了解簡單和粗暴的解決方案以及先進和優化的解決方案。我們使用正規表示式模組並使用其“search()”和“findall()”函數來提取相關字串。最後,我們討論了另一個基於列表切片的解決方案,其中涉及使用「isalnum()」方法。
以上是Python程式提取字串直到第一個非字母數字字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!