Python 简化单位(以品脱为单位),而不改变大小

Python 简化单位(以品脱为单位),而不改变大小,python,units-of-measurement,pint,Python,Units Of Measurement,Pint,使用python pint,假设我有一个定义为 <Quantity(1.0, 'gram * kilopascal / joule')> 这很好,只是我希望震级仍然是1,为了方便用户,单位改为。有没有办法做到这一点 顺便说一句,在我的整个程序中,许多不同的单位都会发生这种情况,并且没有(简单的)方法知道哪些单位是正确的单位,这使得我无法使用convert\u to方法。例如,在这种情况下,它应该从1000克变为千克,但在下一种情况下,它可以从0.001米变为1毫米,依此类推 我知道

使用
python pint
,假设我有一个定义为

<Quantity(1.0, 'gram * kilopascal / joule')>
这很好,只是我希望震级仍然是1,为了方便用户,单位改为
。有没有办法做到这一点

顺便说一句,在我的整个程序中,许多不同的单位都会发生这种情况,并且没有(简单的)方法知道哪些单位是正确的单位,这使得我无法使用
convert\u to
方法。例如,在这种情况下,它应该从
1000克
变为
千克
,但在下一种情况下,它可以从
0.001米
变为
1毫米
,依此类推

我知道品脱0.7(我仍在使用0.6)有一个新的系统选项,但我也无法解决这个问题


干杯

首先,克不再被视为0.8.1品脱的基本单位。相反,品脱将千克视为基本单位,根据国际单位制标准:

>>> x = 0.1*ureg['g kpascal / J']
>>> print(x.to_base_units())
0.1 kilogram / meter ** 3
第二,我认为你可能混淆了两件事,以基本单位计算数量,以及一个方便的前缀
to_base_units()
不是为了方便地获取前缀,而是为了获取基本单位(SI系统中的m、s、kg、a、K、mol和cd)的数量。如果您想要一个方便的前缀,您可能需要考虑<代码> toyCu压() >:


有没有一个
.convert\u to(unit)
方法,你可以调用它,比如
q.convert\u to('kg/meter**3')
这是一个好主意,特别是在这种情况下,但是这种情况发生在许多不同的单位上,并且没有(简单的)方法知道它要转换成的正确单位。在我的问题中,我会更明确地说明这个事实。你们需要重新定义基本质量单位,从克到千克。可能会有帮助。这很有趣,但我认为这最终会返回一克的
,不是吗?我希望避免任何数量的大小与1不同(当然,不可能的情况除外)。
>>> x = 0.1*ureg['g kpascal / J']
>>> print(x.to_base_units())
0.1 kilogram / meter ** 3
>>> print(x.to_base_units().to_compact())
100.0 gram / meter ** 3