python - 将 key 与 python 中的不同对匹配

标签 python python-3.x

由于属性的名称不同,我需要将键值对的键与正则表达式进行匹配。

可能的名称在字典中定义:

MyAttr  = [
    ('ref_nr', 'Reference|Referenz|Referenz-Nr|Referenznummer'),
    ('color', 'Color|color|tinta|farbe|Farbe'),
]

从另一个字典中的项目导入属性:

ImportAttr  = [
    ('Referenz', 'Ref-Val'),
    ('color', 'red'),
]

现在我想返回导入属性的值,如果它是一个已知属性(在我的第一个字典 MyAttr 中定义)匹配相关属性的不同拼写。

for key, value in ImportAttr:
    if key == "Referenz-Nr" : ref      = value
    if key == "Farbe"       : color    = value

目标是返回已知属性的可能属性值。

print(ref)
print(color)

如果“Referenz-Nr”和“Farbe”是已知属性,应该返回值。

显然这个伪代码不起作用,我只是无法理解为键搜索实现正则表达式的函数。

最佳答案

我不清楚,但也许你想要:

#!/usr/bin/python3

MyAttr  = [
    ('ref_nr', 'Reference|Referenz|Referenz-Nr|Referenznummer'),
    ('color', 'Color|color|tinta|farbe|Farbe')
]

ImportAttr  = [
    ('Referenz', 'Ref-Val'),
    ('color', 'red'),
]

ref, color = None, None

for key, value in ImportAttr:
    if key in MyAttr[0][1].split('|'): 
        ref = value
    if key in MyAttr[1][1].split('|'): 
        color = value

print("ref: ", ref)
print("color: ", color)

拆分可以通过分隔符(此处为“|”字符)将字符串拆分为字符串列表,然后您可以检查是否是该列表中的键。

下面的解决方案有点棘手。如果您不想将位置硬编码到您的源代码中,您可以使用 locals()。

#!/usr/bin/python3

MyAttr  = [
    ('ref', 'Reference|Referenz|Referenz-Nr|Referenznummer'),
    ('color', 'Color|color|tinta|farbe|Farbe')
]

ImportAttr  = [
    ('Referenz', 'Ref-Val'),
    ('color', 'red'),
]

ref, color = None, None

for var, names in MyAttr:
    for key, value in ImportAttr:
        if key in names.split('|'):
            locals()[var] = value
            break

print("ref: ", ref)
print("color: ", color)

关于python - 将 key 与 python 中的不同对匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53465977/

相关文章:

python - Python 中的 My.Resources(vb.net) 相当于什么?

python - 如何使用递归函数检查两个节点是否连接

python - 在 PyCharm 上导入 NumPy

python - 在线程中捕获键盘中断或处理信号

python-3.x - tensorflow 中 tf.data.Dataset 的填充

python - 将值插入 Python 列表中的特定索引

python - 使用 requests 函数下载页面时遇到问题 - 返回 410 html 错误代码,但在浏览器中有效

python - 进度条将不需要的字符打印到控制台

python - 为什么我在 pip 安装模块时得到这些 "WARNING: Target Directory <directory> already exists."?

python - exit() 不适用于 cx_freeze