1. 程式人生 > 程式設計 >Python中過濾字串列表的方法

Python中過濾字串列表的方法

Python使用列表資料型別在順序索引中儲存多個數據。它的工作方式類似於其他程式語言的數字陣列。filter()方法是Python的一種非常有用的方法。可以使用filter()方法從Python中的任何字串、列表或字典中過濾一個或多個數值。它根據任何特定條件過濾資料。當條件返回true時,它將儲存資料,而返回false時將丟棄資料。本文通過使用不同的示例展示瞭如何在Python中過濾列表中的字串資料。您必須使用Python 3+來測試本文的示例。

使用另一個列表過濾字串列表

本示例說明了如何在不使用任何方法的情況下過濾字串列表中的資料。 字串列表在此使用另一個列表進行過濾。 在此,聲明瞭兩個列表變數,名稱分別為list1和list2。 使用list1的值過濾list2的值。 該指令碼會將list2的每個值的第一個單詞與list1的值進行匹配,並列印list1中不存在的那些值。

#coding=utf-8
# 宣告兩個列表變數
list1 = ['Python','PHP','Java','Bash']
list2 = ['JavaScript是客戶端指令碼語言','PHP是伺服器端指令碼語言','Java是一種程式語言','Kotlin是一種靜態程式語言']

# 根據第一個列表過濾第二個列表
filter_data = [x for x in list2 if
       all(y not in x for y in list1)]

# 在過濾前和過濾後列印列表資料
print("第一個列表的內容:",list1)
print("第二個列表的內容:",list2)
print("過濾後的第二個列表的內容:",filter_data)

執行指令碼。 在此,list1不包含單詞“Kotlin”。 輸出將僅包含list2中的一個值,即 ['Kotlin是一種靜態程式語言']。

如何在Python中過濾字串列表

輸出如下:

第一個列表的內容: ['Python','Bash']
第二個列表的內容: ['JavaScript是客戶端指令碼語言','Kotlin是一種靜態程式語言']
過濾後的第二個列表的內容: ['Kotlin是一種靜態程式語言']

使用另一個列表和自定義函式過濾字串列表

本示例說明如何使用另一個列表和自定義過濾器功能過濾字串列表。 該指令碼包含兩個名為list1和list2的列表變數。 自定義過濾器功能將找出兩個列表變數的公共值。

# 宣告兩個列表變數
list1 = ['100','67','39','505','122','287','399']
list2 = ['70','100','308','415','362','230']

# 宣告一個函式來過濾第一個列表中的資料
def Filter(list1,list2):
  return [n for n in list1 if
      any(m in n for m in list2)]

# 在過濾器之前和之後列印列表資料
print("list1的的內容:",list1)
print("list2的的內容:",list2)
print("過濾後的資料",Filter(list1,list2))

執行指令碼。 兩個列表變數中都存在100的值。 執行指令碼後,將生成以下輸出。

list1的的內容: ['100','399']
list2的的內容: ['70','230']
過濾後的資料 ['100']

使用正則表示式過濾字串列表

通過使用前兩個示例中的all()和any()方法來過濾列表。 在此示例中,使用正則表示式從列表中過濾資料。 正則表示式是一種模式,通過該模式可以搜尋或匹配任何資料。 Python中使用're'模組在指令碼中應用正則表示式。 在此,使用主題程式碼宣告列表。 正則表示式用於過濾以“ CSE”開頭的主題程式碼。 正則表示式模式中使用'^'符號在文字的開頭進行搜尋。

# 匯入re模組以使用正則表示式
import re

# 宣告列表包含科目編號
sublist = ['IDC-108','OKY-309','IDC-709','PHP-102','MIO-801']

# 宣告過濾功能
def Filter(datalist):
  # 根據列表中的正則表示式搜尋資料
  return [val for val in datalist
    if re.search(r'^IDC',val)]

# 列印過濾器資料
print(Filter(sublist))

執行指令碼。 子列表變數包含兩個以“IDC”開頭的值。 執行指令碼後,將顯示以下輸出。

['IDC-108','IDC-709']

使用lamda表示式過濾字串列表

本示例說明了使用lamda表示式從字串列表中過濾資料。 在這裡,名為search_word的列表變數用於從名為text的文字變數中過濾內容。 通過使用split()方法,基於空間將文字內容轉換為名為text_word的列表。 lamda表示式將忽略text_word中存在於search_word中的那些值,並通過新增空格將過濾後的值儲存在變數中。

# 宣告一個包含linuxidc_word中關鍵詞的列表
linuxidc_word = ["系統","linuxidc","Python","Kotlin"]

# 定義文字,從列表中搜索單詞
text = "Linux公社 linuxidc 是專業的 Linux 系統 入口網站,實時釋出 最新 Kotlin 資訊!"

# 根據空格分割文字並將單詞儲存在列表中
text_word = text.split()

# 使用lambda表示式過濾資料
filter_text = ' '.join((filter(lambda val: val not in linuxidc_word,text_word)))

# 在過濾前和過濾後列印文字
print("\n過濾前的文字:\n",text)
print("過濾後的文字:\n",filter_text)

執行指令碼。 執行指令碼後,將顯示以下輸出。

過濾前的文字:
Linux公社 linuxidc 是專業的 Linux 系統 入口網站,實時釋出 最新 Kotlin 資訊!
過濾後的文字:
Linux公社 是專業的 Linux 入口網站,實時釋出 最新 資訊!

使用filter()方法過濾字串列表

filter()方法接受兩個引數。 第一個引數採用函式名稱或“ None”,第二個引數採用列表變數的名稱作為值。 filter()方法如果返回true,則從列表中儲存這些資料,否則將丟棄該資料。 在此,第一個引數值不指定任何值。 所有不為false的值將從列表中檢索為已過濾資料。

#宣告混合資料列表
listData = ['linuxidc',90,9,'com',100,False,22,True,'1']

# 使用None和列表呼叫filter()方法
filteredData = filter(None,listData)

#過濾資料後列印列表
print('過濾後的列表:')
for val in filteredData:
  print(val)

執行指令碼。該列表只包含一個false值,在過濾後的資料中將省略該false值。

總結:

當您需要從列表中搜索和檢索特定值時, 過濾非常有用。我希望上面的例子能幫助讀者理解從字串列表中過濾資料的方法。

作者: wyh草樣

出處:https://www.cnblogs.com/wyh0923/p/14166552.html

以上就是Python中過濾字串列表的方法的詳細內容,更多關於Python中過濾字串列表的資料請關注我們其它相關文章!