4

pint中,如何重新定义micro-要拼写的前缀µ-而不是u-?在定义单位时,两者都是别名,但是在获取短符号(例如{:~}格式规范)时,即使我尝试重新定义,也会pint恢复为:u-micro- = 1e-6 = µ-

In [155]: ureg.define("micro- = 1e-6 = µ-")
WARNING  2016-01-06 15:19:07,017 unit._adder:563: Redefining 'micro' (<class 'pint.definitions.PrefixDefinition'>)
WARNING  2016-01-06 15:19:07,017 unit._adder:563: Redefining 'µ' (<class 'pint.definitions.PrefixDefinition'>)

(请注意,这些警告显然是通过日志记录模块发出的,并且由于 my .pythonrc,中的规则而出现logging.basicConfig(format=("%(levelname)-8s %(asctime)s %(module)s.%(funcName)s:%(lineno)s: %(message)s"), level=logging.DEBUG)

In [156]: x = 3 * ureg.micrometre

In [157]: ureg._get_symbol("micrometer")
Out[157]: 'um'

In [158]: "{:~}".format(x)
Out[158]: '3 um'

如何重新定义micro-注册表中的条目,以便"{:~}".format(x)给我3 µm而不是3 um

编辑

我正在使用pint最新的 git 存储库:

In [161]: print(pint.__version__)
0.7.dev0

编辑 2

仅当存在使用u-前缀的先前定义的数量时才会出现这种情况:

In [3]: ureg = pint.UnitRegistry()

In [4]: q = 12 * ureg.um

In [5]: ureg.define("micro- = 1e-6 = µ-")
WARNING  2016-01-06 15:41:25,477 unit._adder:563: Redefining 'micro' (<class 'pint.definitions.PrefixDefinition'>)
WARNING  2016-01-06 15:41:25,477 unit._adder:563: Redefining 'µ' (<class 'pint.definitions.PrefixDefinition'>)

In [6]: x = 3 * ureg.micrometre

In [7]: "{:~}".format(x)
Out[7]: '3 um'

但是(新会话):

In [7]: x = 3 * ureg.micrometre

In [8]: "{:~}".format(x)
Out[8]: '3 µm'

所以我想在使用u-别名之前需要重新定义默认值。

4

1 回答 1

0

您需要在使用(诚然方便一些更容易键入)µ-前缀之前u-重新定义前缀:

In [2]: ureg = pint.UnitRegistry()

In [3]: ureg.define("micro- = 1e-6 = µ-")

In [4]: x = 3 * ureg.um

In [5]: print("{:~}".format(x))
3 µm

但是(其他会话):

In [3]: x = 3 * ureg.um

In [4]: ureg.define("micro- = 1e-6 = µ-")

In [5]: print("{:~}".format(x))
3 um
于 2016-01-06T15:47:26.643 回答