由于属性的名称不同,我需要将键值对的键与正则表达式进行匹配。
可能的名称在字典中定义:
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/