将字符串转换为带有模式的几个变量

问题描述 投票:3回答:1

我还在学习python,有什么办法可以将python字符串转换为带有已定义模式的几个变量?

例如实例模式和文本:

pattern = '{var1},{var2}::{var3}-:{var4}'
string_text = 'test1,test2::test3-:test4'

转换为:

var1, var2, var3, var4 = magic method convert string_text using pattern
print(var1)  # test1
print(var2)  # test2
print(var3)  # test3
print(var4)  # test4

我知道有可能对datetime对象执行这种操作:

datetime.strptime('1992-12-22', "%Y-%m-%d")

我也可以用正则表达式来做到这一点(不需要帮助;但也许字符串对象中有相同的方法,我只是不知道该如何使用?

我将不胜感激!

python string
1个回答
0
投票

[您可以使用正则表达式将pattern转换为带有命名捕获组的适当正则表达式模式,例如'(?P<var1>.*?),(?P<var2>.*?)::(?P<var3>.*?)-:(?P<var4>.*?)',然后使用该正则表达式获取包含“变量”的字典:

>>> import re
>>> pattern = '{var1},{var2}::{var3}-:{var4}'
>>> string_text = 'test1,test2::test3-:test4'
>>> p = re.sub("\{(.*?)\}", r"(?P<\1>.*?)", pattern)
>>> m = re.match("^" + p + "$", string_text)
>>> m.groupdict()
{'var1': 'test1', 'var2': 'test2', 'var3': 'test3', 'var4': 'test4'}
© www.soinside.com 2019 - 2024. All rights reserved.