2016-06-07 99 views
1

我有一個像檢查蟒系列包含在另一個列表中的任何字符串

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

了一系列的24個字符長度相等的字符串和我有一個列表還與4個字符長度相等的字符串像

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

我想比較my_list 4個字符每個塊在my_series每個條目中的每個條目,並返回該列表字符串在發現my_series項目。

爲電子商務xample爲my_list中的字符串'This'我希望返回my_series項目1和2,'XXXX'my_series項目將返回1,2,3。

+3

你有試過什麼來達到這個目的嗎?也許你可以給我們提供一個你曾經嘗試過的錯誤消息的例子。否則,請參閱https://docs.python.org/3/tutorial/datastructures.html – glls

+0

不會幫助太多,但如my_series [0]中的my_list [0]: –

回答

3

以下生成器將創建一個2維列表。每個列表將包含任何匹配,並且它的位置將匹配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]等... 我希望這能幫助你!

-1

您需要在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 
+0

我不相信這是OP期望的輸出。 – TheLazyScripter

相關問題