You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:59:17