Python 在 Streamlit 应用程序中以不正确的顺序嵌套循环 2 个列表

问题描述 投票:0回答:1

我有一个描述相同街道地址的混乱字符串列表。我想用正则表达式从列表中提取一个街道名称。我有另一个列表,它是根据我的偏好排序的,即应该从列表中选择哪个杂乱的“街道”模式(例如,街道、街道等)。

我的代码如下。不知何故,偏好功能不正确。 输入列表由流式多选框生成:

[
0:
"Ammerländer Heerstrasse"
1:
"Old. Ammerländer-Heerstr."
]
    default_street = None

    inputvalues = [
        (r"str\.",r"[öäüßA-za-z\-]*str\.",r"str\.","straße"),
        (r"straße",r"[öäüßA-za-z\-]*straße",'',''),
        (r"strasse",r"[öäüßA-za-z\-]*strasse",r"strasse","straße"),
        ...more markers of street names in German...
        ]

    # gasse                          

    while default_street == None:
        for match, str, streettorep, streetrep in inputvalues:
            for row in col2selectlist:
                if re.search(match, row) != None:
                    default_str = re.search(str, row)
                    default_street = re.sub(streettorep,streetrep,default_str.group())
        else:
            break

我希望 default_street 的结果是列表项 1 中的“Ammerländer-Heerstraße”,因为 str.在我的列表中位于 strasse 之前,但结果是列表项 0 中的“Heerstraße”。如果我反转列表,结果是相同的。

如何让我的偏好列表正常工作?

python regex loops streamlit
1个回答
0
投票
while default_street == None:
    for match, str, streettorep, streetrep in inputvalues:
        for row in col2selectlist:
            if re.search(match, row) != None:
                default_str = re.search(str, row)
                default_street = re.sub(streettorep, streetrep, default_str.group())
                print(default_street)
    else:
        break

应该具有启发性,然后您将能够解决您的问题:)

© www.soinside.com 2019 - 2024. All rights reserved.