gpt4 book ai didi

python - 在 Python 中将字符串转换或取消格式化为变量(如 format(),但相反)

转载 作者:IT老高 更新时间:2023-10-28 22:15:53 26 4
gpt4 key购买 nike

我有 Version 1.4.0\nVersion 1.15.6\n 形式的字符串,我想要一种提取这三个数字的简单方法从他们。我知道我可以使用 format 方法将变量放入字符串中;我基本上想倒着做,像这样:

# So I know I can do this:
x, y, z = 1, 4, 0
print 'Version {0}.{1}.{2}\n'.format(x,y,z)
# Output is 'Version 1.4.0\n'

# But I'd like to be able to reverse it:

mystr='Version 1.15.6\n'
a, b, c = mystr.unformat('Version {0}.{1}.{2}\n')

# And have the result that a, b, c = 1, 15, 6

我发现有人问过同样的问题,但回答是针对他们的具体情况:Use Python format string in reverse for parsing

一般的答案(如何做 format() 反向)会很棒!不过,我的具体案例的答案也会非常有帮助。

最佳答案

只是建立在 Uche's answer 的基础上,我正在寻找一种通过带有 kwargs 的模式来反转字符串的方法。所以我整理了以下函数:

def string_to_dict(string, pattern):
regex = re.sub(r'{(.+?)}', r'(?P<_\1>.+)', pattern)
values = list(re.search(regex, string).groups())
keys = re.findall(r'{(.+?)}', pattern)
_dict = dict(zip(keys, values))
return _dict

按照以下方式工作:

>>> p = 'hello, my name is {name} and I am a {age} year old {what}'

>>> s = p.format(name='dan', age=33, what='developer')
>>> s
'hello, my name is dan and I am a 33 year old developer'
>>> string_to_dict(s, p)
{'age': '33', 'name': 'dan', 'what': 'developer'}

>>> s = p.format(name='cody', age=18, what='quarterback')
>>> s
'hello, my name is cody and I am a 18 year old quarterback'
>>> string_to_dict(s, p)
{'age': '18', 'name': 'cody', 'what': 'quarterback'}

关于python - 在 Python 中将字符串转换或取消格式化为变量(如 format(),但相反),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11844986/

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