使用 Python 规范化电子工程值表示法

在电子工程中,有各种需要被直观用户界面识别的值表示法。示例包括:

各种各样的选项,包括千位分隔符、逗号作为小数分隔符和后缀作为小数分隔符、可选空格和科学记数法,使得不使用专门库就难以规范化值。

本文列出的脚本提供了一个公共领域但全面的库来将此类值规范化。为了正确操作,需要 SI 后缀列表和有效单位列表。这些可能需要为不同应用程序修改。

我编写了 UliEngineering 库,一个仅 Python3 的电子库,除了许多其他有用功能如电阻选择外,还包括解析此表示法。

脚本底部包含用法示例。如果值无法解释,所有函数返回 None

首先,安装 UliEngineering

然后,你可以使用 EngineerIO.py 中的函数来解析和生成上面列出的格式。除了上面列出的表示法外,还可以解析许多不同的值。

使用 normalize_engineer_notation() 获取 (value, unit) 元组。

engineerio_example.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_engineer_notation("1 fA")
(1e-15, 'A')
>>> normalize_engineer_notation("4,500.123 A")
(4500.123, 'A')

注意 UliEngineering 有一个内置单位列表,需要包含你的单位才能正确验证。像 V/√Hz 这样的特殊单位组合或像 µV 这样的 unicode 前缀也被识别。

你也可以使用 format_value() 从值和单位生成带 SI 前缀的可读字符串:

engineerio_format.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_engineer_notation("4,500.123 A")
(4500.123, 'A')
>>> format_value(4.5e-6, "A")
'4.50 µA'
>>> format_value(4.5e-6, "V/√Hz")
'4.50 µV/√Hz'

如果你需要自定义单位、前缀等集合,你可以初始化自己的 EngineerIO() 类实例。

对于你只需要数值而不关心单位的常见情况,你可以使用 normalize_numeric()

engineerio_numeric.py
>>> from UliEngineering.EngineerIO import *
>>> normalize_numeric("4,500.123 A")
4500.123

请记住 UliEngineering 仅适用于 Python3.x,因为 Python2 只支持到 2020 年。


Check out similar posts by category: Electronics, Python