Python Pint: 将单位的简短表示设置为默认值
Python Pint: set short representation of units as default
Pint 单位默认用全名表示:
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> q = ureg.Quantity('3.456 m^2')
>>> print(q)
3.456 meter ** 2
>>> print('The pretty representation is {:P}'.format(q))
The pretty representation is 3.456 meter²
从文档和 可以看出,单位可以用缩写形式表示,这是它们在现实世界中常用的表示方式:
>>> print(format(q,'~'))
3.456 m ** 2
>>> print('The pretty representation is {:~P}'.format(q))
The pretty representation is 3.456 m²
但是,我想将短表示设置为默认表示,可以吗?
我不知道它是错误的、弱的还是非 pythonic 的,但它似乎有效并且我正在使用它,直到出现更好的解决方案:
import pint
pint.quantity.Quantity.__str__ = lambda self: format(self,'~')
在脚本开头添加这样的行后,所有单位的字符串表示都以短格式返回(例如 mm
而不是 millimeter
)。
我在 tutorial 中本节 字符串格式 的底部找到了这个。这是一个最小的工作示例:
import pint
ureg = pint.UnitRegistry()
ureg.default_format = '~' # Add this if you want to use abbreviated unit names.
accel = 1.3 * ureg['meter/second**2']
print(f'The acceleration is {accel}')
这输出:The acceleration is 1.3 m / s ** 2
这些也是短单位的有效选项:~L
(LaTeX)、~H
(HTML) 和 ~P
(Pretty print)。
Pint 单位默认用全名表示:
>>> import pint
>>> ureg = pint.UnitRegistry()
>>> q = ureg.Quantity('3.456 m^2')
>>> print(q)
3.456 meter ** 2
>>> print('The pretty representation is {:P}'.format(q))
The pretty representation is 3.456 meter²
从文档和
>>> print(format(q,'~'))
3.456 m ** 2
>>> print('The pretty representation is {:~P}'.format(q))
The pretty representation is 3.456 m²
但是,我想将短表示设置为默认表示,可以吗?
我不知道它是错误的、弱的还是非 pythonic 的,但它似乎有效并且我正在使用它,直到出现更好的解决方案:
import pint
pint.quantity.Quantity.__str__ = lambda self: format(self,'~')
在脚本开头添加这样的行后,所有单位的字符串表示都以短格式返回(例如 mm
而不是 millimeter
)。
我在 tutorial 中本节 字符串格式 的底部找到了这个。这是一个最小的工作示例:
import pint
ureg = pint.UnitRegistry()
ureg.default_format = '~' # Add this if you want to use abbreviated unit names.
accel = 1.3 * ureg['meter/second**2']
print(f'The acceleration is {accel}')
这输出:The acceleration is 1.3 m / s ** 2
这些也是短单位的有效选项:~L
(LaTeX)、~H
(HTML) 和 ~P
(Pretty print)。