在join命令python中使用枚举

2024-05-16 14:20:17 发布

您现在位置:Python中文网/ 问答频道 /正文

python 3.8.2:

我试图从enum获取一个用join创建的字符串

import enum

# import aenum
# https://pypi.org/project/aenum/


class ELEMENTS(enum.Enum):
    L = ("L", "light", "licht")
    P = ("P", "power connectors", "stopcontacten")
    vM = ("vM", "ventilation motor", "ventilatie motor")
    cvM = ("cvM", "CV motor", "CV motor")
    S = ("S", "switch", "schakelaar")
    V = ("V", "valve", "klep")


ELEMENTS_list = []
print(len(ELEMENTS))
for s in ELEMENTS:
    ELEMENTS_list.append(s.value[0])

regexELEMENTS = "[" + ("|".join(ELEMENTS_list)) + "]"

结果返回:

[L|P|vM|cvM|S|V]

更新“VPfB”的反馈信息-谢谢

regexELEMENTS = "(" + ("|".join(ELEMENTS_list)) + ")"

返回所需的结果:

(L|P|vM|cvM|S|V)

根据我的拙见,如果我能从enum立即执行,那么代码将更合适

print("|".join(ELEMENTS.value[0]))

返回错误:

... in __getattr__
raise AttributeError(name) from None

另一种方法:

print("|".join(ELEMENTS))

返回错误:

TypeError: sequence item 0: expected str instance, ELEMENTS found

在第二步中,我将在正则表达式中使用变量“regexELEMENTS”{regexELEMENTS}'

基于这个问题: How to use a variable inside a regular expression?

我在这里错过了什么。。。还是我错了

希望能理解,我做错了什么

因此,更欢迎对代码进行改进的建议

谢谢


Tags: 代码inimportvaluevmenumelementscv
1条回答
网友
1楼 · 发布于 2024-05-16 14:20:17

不确定是否要使用与示例中相同的名称或value[0]字符串。选择一个:

print("|".join(ELEMENTS.__members__))  # using names

或:

print("|".join(m.value[0] for m in ELEMENTS))   # using value[0]

这个答案主要基于enum iteration docs。为了简洁起见,我省略了[](顺便说一句,我认为您希望()构建一个可用的regexp)

相关问题 更多 >