#python #pint
#python #pint
Вопрос:
У меня есть количество в пинте, и я хочу, чтобы строка отображалась с сокращениями единиц измерения (т. Е. префиксами СИ и буквами единиц измерения), но без a /
для обозначения деления.
Другими словами, я хочу, чтобы строка отображалась как
'cm g µs⁻¹'
Встроенное красивое форматирование дает мне почти то, что я хочу, но я хотел бы настроить его так, чтобы умножение обозначалось пробелом, а знаменатели обозначались отрицательными показателями.
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> u = ureg['g cm / us']
>>> f"{u.units:~P}"
'cm·g/µs'
Я нашел способ сделать то, что я хочу, просмотрев исходный код pint, но он включает в себя доступ к закрытому атрибуту _units
класса units, поэтому мне интересно, есть ли лучший способ
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> u = ureg['g cm / us']
>>> abbrv_units = {ureg.get_symbol(k) : v for k, v in u.units._units.items()}
>>> pint.formatting.format_unit(abbrv_units, 'P', as_ratio=False, product_fmt=' ')
'cm g µs⁻¹'
Я думаю, было бы неплохо, если бы я мог использовать спецификатор ~
формата или какую-то функцию для сокращения строк.