Python:如何垂直和对角读取数组元素,并查看它们是否与字符串列表中的元素匹配

Python:如何垂直和对角读取数组元素,并查看它们是否与字符串列表中的元素匹配,python,python-3.x,Python,Python 3.x,我想知道是否有一种方法可以检查字符数组中是否有给定列表中的单词 以下是我目前的代码: import pprint with open("C:/Users/luca/Desktop/Homework02/cp2_Animali.txt") as f: contents = f.read() output1, output2, output3,output4 = contents.split('\n\n\n', 3) with open('output2.txt', 'w') as

我想知道是否有一种方法可以检查字符数组中是否有给定列表中的单词

以下是我目前的代码:

import pprint

with open("C:/Users/luca/Desktop/Homework02/cp2_Animali.txt") as f:
    contents = f.read()

output1, output2, output3,output4 = contents.split('\n\n\n', 3)



with open('output2.txt', 'w') as o1:
    o1.write(output2)

with open('output3.txt', 'w') as o2:
    o2.write(output3)

read1= open('output2.txt', 'r')
read2= open('output3.txt', 'r')
l1e=[]
for line in read1:
    l1=list(line.replace('\n','').replace('\t',''))
    l1e.append(l1)
pprint.pprint(l1e)
l2e=[]
for line in read2:
    l2=str(line.replace('\n',''))
    l2e.append(l2)
pprint.pprint(l2e)
直到现在,我已经将文本文件分为两部分,以获得包含网格的文本,然后将其转换为数组,另一部分包含我需要在网格中查找的单词,这些单词可以重复,相同的字母可以用于更多的单词

我的文本文件是(包括开头和结尾的空格,不包括“):


如果
output2
是您的网格,那么让我们假设它是唯一的、连续的字符串,而不是网格。这将使搜索更容易,让我们假设它有一个长度
n
和高度
m

output2 = "mystringwithagrid...."
n = 5
m = 4
然后,我们可以从
output3
循环所有字符串,并检查是否可以在output2中找到具有多种模式的字符串:

for string in output3:
    length = len(string)

    # search on each line
    for i in range(m):
        for j in range(n-length):
            if output2[i*n+j:i*n+j+length] == string:
                print("found horizontally at %d,%d" % (i, j))

    # search in diagonal
    for i in range(m-length):
        for j in range(n-length):
            if output2[i*n+j:i*n+j+length:n+1] == string:
                print("found in diagonal at %d,%d" % (i, j))

添加你想要的其他模式,你就有了结果。

有趣的是,我刚刚解决了这个问题,只是为了看看答案中的算法是否有效。(是的。你的答案是
PANTERA
)顺便说一句,投票结果是我的。您没有显示任何解决方案的尝试。
for string in output3:
    length = len(string)

    # search on each line
    for i in range(m):
        for j in range(n-length):
            if output2[i*n+j:i*n+j+length] == string:
                print("found horizontally at %d,%d" % (i, j))

    # search in diagonal
    for i in range(m-length):
        for j in range(n-length):
            if output2[i*n+j:i*n+j+length:n+1] == string:
                print("found in diagonal at %d,%d" % (i, j))