【发布时间】:2017-11-17 19:39:02
【问题描述】:
编辑: 我坚持使用 python 2.7.5 ...
另一个编辑: 明确需要在模板中进行更改,而不是在处理字典的代码中。
我正在使用字符串格式化程序从模板构建路径。
我知道我可以做到:
currentUser = {'first': "Monty", 'last': "Python"}
template = '/usr/{user[last]}/{user[first]}' # will come from a config file
template.format(user=currentUser)
# Result: '/usr/Python/Monty'
但是在
的情况下currentUser = {'first': "Raymond", 'last': "Luxury-Yacht"}
有没有办法分割,比如说,- 并使用索引?
# something like:
template = '/usr/{user[last].split(-)[0]/{user[first]}' # will come from a config file
template.format(user=currentUser)
# Result: '/usr/Luxury/Raymond'
选择的决定:
- 拆分哪个键
- 由什么字符
- 从拆分中使用哪个索引
必须来自模板字符串;如果当前的迷你语言无法做到这一点,我将不得不编写一个自定义格式化程序。
免责声明:这个例子有点做作,不实用,我知道。我实际上正在处理一个数据库,其中两个关键信息位存储在一个字段中,并由下划线 -_- 连接。我知道我可以在从数据库中提取数据后对数据进行后处理,但是由于每个项目的该字段的约定不同,我什至不能假设拆分操作是有效的(某些项目上的一些值赢了'没有下划线问题)。我希望能够为用户提供模板“语言”,而不是围绕每个约定编写解决方案,以便每个项目自己确定如何提取数据,适应他们选择的任何命名约定,并相应地配置他们的模板.
TL/DR:我不是在寻找修复传入数据的解决方案——我在探索使用 Python 的字符串格式迷你语言拆分字符串的可能性。
【问题讨论】:
-
我很乐意编写一个自定义 string.Formatter 将这种行为引入规范,但如果该功能已经存在,我不想重新发明轮子。
标签: python string split format