Python 3正则模块多维列表搜索及数据块返回问题求助
解决Python多维列表的正则搜索问题
看你目前的代码还没写完,而且需要结合re模块实现多维列表的搜索功能,我来帮你完善并搞定这个需求:
先修复输入函数的问题
你的输入函数最后返回语句没写完,而且逻辑上需要把输入的数字转为字符串,方便后续正则匹配,先把这部分补好:
实现正则搜索逻辑
我们要遍历多维列表里的每个子列表,用re模块匹配符合搜索条件的元素(这里默认你想匹配子列表里的数字项,要是需要匹配所有元素可以调整逻辑),然后返回整个匹配到的子列表。
完整可运行代码
import re # 你的多维列表 my_list = [["10","ten","bottles"], ["9","seven","bottles"], ["8","eight","bottles"]] # 完善后的输入函数 def some_input(prompt): while True: try: my_search = int(input(prompt)) except ValueError: print("ERROR: Please enter a valid number!\nContinue...\n") else: # 转成字符串,方便正则匹配 return str(my_search) # 正则搜索核心函数 def search_multi_list(search_term, target_list): # 编译正则规则,用^和$确保完全匹配,避免输入"9"却匹配到"19"这类情况 pattern = re.compile(rf"^{search_term}$") matched_blocks = [] for sub_list in target_list: # 遍历子列表里的每个元素,找到匹配项就把整个子列表加入结果 for item in sub_list: if pattern.match(item): matched_blocks.append(sub_list) break # 避免同一个子列表被重复添加 return matched_blocks # 执行搜索流程 if __name__ == "__main__": search_key = some_input("Enter the number you want to search: ") result = search_multi_list(search_key, my_list) if result: print(f"Found matching data blocks: {result}") else: print("No matching data blocks found.")
代码说明
- 输入处理:强制要求用户输入有效数字,否则循环提示,直到输入正确为止。
- 正则匹配:用锚定符
^和$保证完全匹配,避免部分匹配的误判。 - 搜索逻辑:只要子列表里有任意元素匹配规则,就把整个子列表作为结果返回,不会重复添加同一个子列表。
测试示例
输入9的话,会输出:
Found matching data blocks: [['9', 'seven', 'bottles']]
输入10的话,会输出:
Found matching data blocks: [['10', 'ten', 'bottles']]
内容的提问来源于stack exchange,提问作者Dmitro
相关产品推荐
相关产品推荐

