gpt4 book ai didi

python - 如何使用类似列表的类型通过 string.Template python 生成 Markdown ?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:29 24 4
gpt4 key购买 nike

我有以下模板

from string import Template
myTemplate = '''$heading
| Name | Age |
| ---- |---- |
'''

问题是写模板的时候不知道表格里会有多少人。所以我想传入一个元组列表,例如:

myTemplate.substitute(...=[("Tom", "23"), ("Bill", "43"), ("Tim", "1")])

如何做到这一点?如果我只是为包含元组的列表添加一个占位符,这将不起作用,因为数据的周围格式将丢失。

我希望模板捕获格式,列表捕获数据并将这两个元素分开。

结果应该是这样的:

| Name | Age |
| ---- |---- |
| Tom | 23 |
| Bill | 43 |
| Tim | 1 |

最佳答案

可能有不想导入功能齐全的模板引擎的原因,例如想在资源严重受限的环境中运行代码。如果是这样,用几行代码就可以做到这一点。

以下可以处理模板字符串中标识为 $A 到 $Z 的最多 26 个元素的元组列表,并返回模板扩展列表。

from string import Template

def iterate_template( template, items):
AZ=[ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i:i+1] for i in range(26) ] # ['A','B',... 'Z']
return [ Template(template).safe_substitute(
dict(zip( AZ, elem ))) for elem in items ]

编辑:为了提高效率,我可能应该实例化一次模板并在列表理解中多次使用它:

def iterate_template( template, items):
AZ=[ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i:i+1] for i in range(26) ] # ['A','B',... 'Z']
tem = Template(template)
return [ tem.safe_substitute( dict(zip( AZ, elem ))) for elem in items ]

使用示例

>>> table = [('cats','feline'), ('dogs','canine')]

>>> iterate_template('| $A | $B |', table )
['| cats | feline |', '| dogs | canine |']

>>> x=Template('$heading\n$stuff').substitute(
heading='This is a title',
stuff='\n'.join(iterate_template('| $A | $B | $C |',
[('cats','feline'), ('dogs', 'canine', 'pack')] ) ) # slight oops
)
>>> print(x)
This is a title
| cats | feline | $C |
| dogs | canine | pack |

关于python - 如何使用类似列表的类型通过 string.Template python 生成 Markdown ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com