如何提取二维数组行列字符?无法获取目标单词完整内容求助
解决二维数组中提取目标单词的问题
首先,你当前的代码只是逐个遍历并打印非'0'的字符,这自然没法把连续的字符组合成完整的单词。要提取出eagle和apple,需要检查数组中连续的字符序列(先覆盖水平、垂直这两种最常见的排列方向,根据你的描述应该足够)。
步骤1:明确检测逻辑
我们需要把数组的每一行、每一列的非空字符(非'0')拼接成字符串,再检查目标单词是否包含在其中——这样就能捕捉到连续排列的字符序列了。
步骤2:修改后的代码实现
下面是调整后的完整代码,包含水平和垂直方向的单词检测:
import numpy as np # 基于你的代码初始化15×15数组 arr2 = np.array(my_list2).reshape(15, 15) board_size = 15 # 定义要提取的目标单词(统一小写方便匹配) target_words = ['eagle', 'apple'] # 检查水平方向的单词(逐行拼接字符) for i in range(board_size): # 把当前行的非'0'字符转小写后拼接成字符串 row_str = ''.join([char.lower() for char in arr2[i] if char != '0']) for word in target_words: if word in row_str: print(word) # 检查垂直方向的单词(逐列拼接字符) for j in range(board_size): # 把当前列的非'0'字符转小写后拼接成字符串 col_str = ''.join([char.lower() for char in arr2[:, j] if char != '0']) for word in target_words: if word in col_str: print(word)
关键说明
- 统一转小写是为了避免大小写不匹配的问题(比如你数组里是大写的
E A G L E,转小写后就能完美匹配eagle)。 - 你之前没拿到
apple的首字母A,大概率是因为apple是垂直排列的(A在某一列上方,下方依次是P-P-L-E),而原代码只是逐行零散打印字符,没有把同一列的连续字符组合起来,自然识别不出完整单词。
如果你的单词还有斜向排列的情况(比如左上到右下、右上到左下),可以再扩展斜向的检查逻辑,不过先搞定水平和垂直方向应该就能满足你的需求了。
内容的提问来源于stack exchange,提问作者Rainier Villanueva
相关产品推荐
相关产品推荐

