簡體   English   中英

檢查python系列是否在另一個列表中包含任何字符串

[英]Check if a python series contains any string in another list

我有一系列由24個字符組成的等長字符串,例如

my_series = ['ThisIsASentenceXXXXXXXXX', 'SoIsThisXXXXXXXXXXXXXXXX', 'YouGetThePointXXXXXXXXXX']

我也有一個列表,其中包含等長的4個字符的字符串,例如

my_list = ['This', 'XXXX', 'GetT']

我想將my_list中的每個條目與my_series中的每個條目中的4個字符的每個塊進行比較,並返回在其中找到列表字符串的my_series項目。

例如,對於my_list中的字符串'This',我希望返回my_series項目1和2,而對於'XXXX',則要返回my_series項目1,2,3。

下面的生成器將創建一個二維列表。 每個列表將包含任何匹配項,並且其位置將匹配my_list索引。

n_list = [[x for x in my_series if item in x] for item in my_list]

輸出:

[['ThisIsASentenceXXXXXXXXX','SoIsThisXXXXXXXXXXXXXXXX'],['ThisIsASentenceXXXXXXXXX','SoIsThisXXXXXXXXXXXXXXXX','YouGetThePointXXXXXXXXXX'],['YouGetThePointXXXXXXXXXX']]

因此n_list[0]包含my_list[0]等的匹配項...希望對您有所幫助!

您需要將my_series每個條目分成6個塊:

serires_chunks = [(s[0:4], s[4:8], s[8:12], s[12:16], s[16:20], s[20:24])
                  for s in my_series]

然后,您可以遍歷此塊以找到匹配的項目:

for item in my_list:
    for index, chunks in enumerate(serires_chunks):
        for place, chunk in enumerate(chunks, 1):
            if item == chunk:
                location = my_series[index]
                print("Found '{item}' in '{location}' at {place}".format(**locals()))

您將獲得:

Found 'This' in 'ThisIsASentenceXXXXXXXXX' at 1
Found 'This' in 'SoIsThisXXXXXXXXXXXXXXXX' at 2
Found 'XXXX' in 'ThisIsASentenceXXXXXXXXX' at 5
Found 'XXXX' in 'ThisIsASentenceXXXXXXXXX' at 6
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 3
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 4
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 5
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 6
Found 'XXXX' in 'YouGetThePointXXXXXXXXXX' at 5
Found 'XXXX' in 'YouGetThePointXXXXXXXXXX' at 6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM