2016-06-07 96 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

相关问题