【问题标题】:How to return items from a multi-dimensional list using regex search如何使用正则表达式搜索从多维列表中返回项目
【发布时间】:2018-03-29 19:17:54
【问题描述】:

我正在寻求解决 Python 3 问题的帮助: 在多维列表中使用 RE 模块搜索并从列表中返回大块数据后

这里是我有多远的例子:

import re

# my search input
my_list = [["10","ten","bottles"],
          ["9","seven","bottles"], 
          ["8","eight","bottles"]]

# search input
def some_input(prompt):
    while True:
        try:
            my_search = int(input(prompt))
        except ValueError:
            print(
                "ERROR: Please enter your account number \
                \nContinue...\n"
                )
        else:
            break
    return str(my_search)

# search for match
def find_my_input():
    search = some_input("Search >>> ")
    regex = re.compile(search)
    for item in my_list:
        new_list = filter(regex.match, my_list)
        if item == new_list: 
            break
        else:
            continue

假设我的输入是:9
预期输出为:["9","seven","bottles"]

【问题讨论】:

  • 这真的是一个正则表达式问题吗? "blah" in somestring 应该足够好了。剩下的……没那么难。
  • 这真的是正确的答案吗?我期待的不仅仅是这个......

标签: python regex python-3.x list


【解决方案1】:

是的,首先要提到的是Regex 在这里不合适,因为您处理的不是string,而是list 的字符串,这使它更容易。让我们看看你的问题:

假设我的输入是:9,预期输出是:["9","seven","bottles"]

只需 3 行代码即可实现:

for line in my_list: # iterate over your matrix
    if my_value in line: # if your list has your input
        return line # return that list

你可以重写你的函数,让它变得更容易和更短。我可能会建议这样做:

def some_input(data):
    try:
        search = input("Search>>> ")
        if not search.isdigit():
            raise ValueError("Digits expected, instead {}".format(search))
    except ValueError:
        #handle your exception 
        pass

    # search for your list
    for line in data:
        if search in line:
            return line

要对其进行测试,请致电print(some_input(my_list))。随着10 的输入,我得到了下一个输出:

Search>>> 10
['10', 'ten', 'bottles']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-02
    • 2011-09-30
    • 2021-10-15
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多