Pint: укажите сокращенные единицы измерения с помощью «as_ratio = False»

#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⁻¹'
 

Я думаю, было бы неплохо, если бы я мог использовать спецификатор ~ формата или какую-то функцию для сокращения строк.