就在这里分享我是如何解决自己的问题的。下面的类包含一个感兴趣的单元列表,然后可以使用该列表解析Sympy中的单元。from sympy.physics import units as u
class Electric:
units = {}
units[u.V] = 'V'
units[u.W] = 'W'
units[u.A] = 'A'
units[u.Hz] = 'Hz'
units[u.percent] = '\%'
units[u.F] = 'F'
units[u.s] = 's'
units[u.ohm] = '\Omega'
@classmethod
def identify_unit(cls, value):
for unit in cls.units.keys():
aux = value.as_coefficient(unit)
if aux:
if aux.is_number:
return aux, cls.units[unit]
return value
@classmethod
def change_factor(cls, value):
aux = abs(value[0])
if aux >= u.mega:
return value[0] / (10 ** 6), "M" + value[1]
elif aux >= u.kilo:
return value[0] / (10 ** 3), "k" + value[1]
elif aux >= 1:
return value[0], value[1]
elif aux >= u.milli:
return value[0] * (10 ** 3), "m" + value[1]
elif aux >= u.micro:
return value[0] * (10 ** 6), "\mu{}" + value[1]
else:
return value
使用示例:
^{pr2}$