首頁 >後端開發 >Python教學 >Python程式提取字串直到第一個非字母數字字符

Python程式提取字串直到第一個非字母數字字符

王林
王林轉載
2023-09-11 12:49:021480瀏覽

Python程式提取字串直到第一個非字母數字字符

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

使用正規表示式模組 Search()

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

使用 Regex 模組 Findall()

這是提取字串直到遇到第一個非字母數字字元的另一種方法。在這個方法中,我們將使用 re 模組中的「findall()」函數來尋找所有出現的由字母數字字元組成的子字串。

將獲得匹配子字串的列表,我們將使用「0」索引值檢索第一個子字串。我們將使用正規表示式:“[\dA-Za-z]*”,它表示一行中的零個或多個字母數字字元。

正規表示式符號「\d」符合0到9之間的任何數字,「A-Z」符合A到Z之間的任何大寫字母,「 a-z” 符合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

使用 Isalnum() 方法

在這個方法中,我們將迭代原始字串中每個字元的索引,並建立一個條件來檢查索引「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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除