【发布时间】:2018-01-31 07:00:14
【问题描述】:
在python中,我们可以使用str.format来构造这样的字符串:
string_format + value_of_keys = formatted_string
例如:
FMT = '{name:} {age:} {gender}' # string_format
VoK = {'name':'Alice', 'age':10, 'gender':'F'} # value_of_keys
FoS = FMT.format(**VoK) # formatted_string
在这种情况下,formatted_string = 'Alice 10 F'
我只是想知道是否有办法从formatted_string 和string_format 获取value_of_keys?它应该是函数Fun 与
VoK = Fun('{name:} {age:} {gender}', 'Alice 10 F')
# the value of Vok is expected as {'name':'Alice', 'age':10, 'gender':'F'}
有什么办法可以得到这个功能Fun?
添加:
我想说,'{name:} {age:} {gender}' 和'Alice 10 F' 只是一个最简单的例子。实际情况可能更困难,space 分隔符可能不存在。
而且从数学上讲,大部分情况是不可逆的,比如:
FMT = '{key1:}{key2:}'
FoS = 'HelloWorld'
VoK 可以是以下任何一个:
{'key1':'Hello','key2':'World'}
{'key1':'Hell','key2':'oWorld'}
....
所以为了明确这个问题,我想补充两个条件:
1. There are always delimiters between two keys
2. All delimiters are not included in any value_of_keys.
在这种情况下,这个问题是可以解决的(从数学上讲):)
另一个显示输入和预期输出的示例:
In '{k1:}+{k2:}={k:3}', '1+1=2' Out {'k1':1,'k2':2, 'k3':3}
In 'Hi, {k1:}, this is {k2:}', 'Hi, Alice, this is Bob' Out {'k1':'Alice', 'k2':'Bob'}
【问题讨论】:
-
只有在格式化字符串中存在一致的分隔符(如空格)和一定的顺序(键的顺序与值完全一致)时,您才能可靠地提取有用的东西。有这些条件吗?
-
嗨,问题已编辑@JacobIRR
标签: python regex string format