Python 3.6 f-string 对 Python 2.7 的同情。现在使用 printf()
项目描述
用于 Python 2.7 的 Python 3.6 f-string 同情(部分兼容性)模块 有关Literal String Interpolation的规范,请参见https://www.python.org/dev/peps/pep-0498/。
来自 PEP-0498 的示例
>>> import datetime
>>> name = 'Fred'
>>> age = 50
>>> anniversary = datetime.date(1991, 10, 12)
>>> f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'
'My name is Fred, my age next year is 51, my anniversary is Saturday, October 12, 1991.'
>>> f'He said his name is {name!r}.'
"He said his name is 'Fred'."
fstring427 的同情输出
>>> from fstring427.fstring import Fmt as f
>>> import datetime
>>> name = 'Fred'
>>> age = 50
>>> anniversary = datetime.date(1991,10,12)
>>> str(f('My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'))
'My name is Fred, my age next year is 51, my anniversary is Saturday, October 12, 1991.'
>>> f('He said his name is {name!r}')()
"He said his name is 'Fred'"
注意主要区别:
f是一个类,而不是字符串类型
f()计算字符串
f实例的 str()也计算字符串
底层实现是 Python 2.7 Format 类的子类,依赖于内部。显然很脆弱,可能不便携,但仍然符合我的目的。
## printf(),一个方便的函数
>>> printf('他说他的名字是{name!r}') 他说他的名字是 'Fred'
它具有 kwargs 临时范围的额外便利
>>> printf('He said his name is {name!r}', name="Sam")
He said his name is 'Sam'
主要不兼容性
Python 3.6 f 字符串经过精心设计,涵盖了 .format() 没有的边缘情况,请参阅 https://mail.python.org/pipermail/python-ideas/2015-July/034726.html
fstring427 在 .format() 之上实现并共享查找的底层实现。如果 .format() 无法处理{field}, fstring427 将在适当的范围内将字段评估为 Python 表达式。在实践中,这意味着:
a = 10
d = {'a': 'string', 10: 'int'}
printf("{d[a]")
打印字符串(Python 2.7 .format() 行为)而不是int (Python 3.6 f 字符串行为)。我发现在我的 2.7 代码中要付出很小的代价才能获得更清晰的打印和字符串格式。
路线图
添加printf()样式日志模块
考虑 printf() 实用函数的 2-3 端口(处理 kwargs 范围)
版权所有 2017, Smartvid.io
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
fstring427-0.9.9.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | fdea61a7c43742bec01189de1e739ccd4b4982b092f5ffdc79eb0d2c281885b6 |
|
| MD5 | 50601c5fda79e78f4ba0f3c1d06fc89e |
|
| 布莱克2-256 | 3af44a32385a4c8c3d379adfc98de81d1132094d007e412f89c31a16699e9b7e |
fstring427-0.9.9 -py2-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5fd65ddfb1fffa52932c65741f0523ac781aa1086ac988cbdea45eed8b8442bd |
|
| MD5 | 1d9596edfb5686e749428aed2f4fb312 |
|
| 布莱克2-256 | c486dbafa4ce325e154d1f713b4336315055ec3ffd8f5ab0791d0782ef286f7c |