python - 在连接命令中使用枚举 - python
问题描述
蟒蛇3.8.2:
我试图获取一个使用join
from创建的字符串enum
。
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)
以我的拙见,如果我可以立即从枚举中执行代码,那么代码会更合适。
...
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”。'{正则表达式}'
基于这个问题: 如何在正则表达式中使用变量?
我在这里错过了什么......还是我错了?
希望理解,我做错了什么......
更欢迎提出使代码更好的建议。
谢谢
解决方案
不确定您是否要使用value[0]
在您的示例中碰巧相同的名称或字符串。选一个:
print("|".join(ELEMENTS.__members__)) # using names
或者:
print("|".join(m.value[0] for m in ELEMENTS)) # using value[0]
这个答案主要基于enum iteration docs。[
为了简洁起见,我省略]
了(顺便说一句,我认为您想要(
并)
构建一个可用的正则表达式)
推荐阅读
- ios - iOS 14 - 源应用程序的责任 - 显示广告网络签署的广告
- react-native - 是否有任何流行的日历框架可用于 react native expo?
- docker - Docker:从子目录复制内容不起作用
- c++ - 如何使用c ++中的字段编号访问protobuf中字段的值
- postgresql - 如何选择与当前用户在所有相同事件中注册的所有用户
- python - 通过装饰器访问父级时,Python将类拆分为多个文件
- javascript - 使用 Angular 9 中的 Keyup 将输入值传递给另一个输入
- javascript - 如何在页面加载时从文件中调用 jquery 函数?
- django - Django(GET) - 是否可以仅在一个参数中传递多个值,而不是多个参数称为相同
- android-studio - 无法找到 Android Studio 的 adb 问题