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

栏目: 技巧 · 发布时间: 2021-04-13

简介  这篇文章主要介绍了将字符串转换为带有模式的几个变量以及相关的经验技巧,文章约1169字,浏览量313,点赞数3,值得参考!

我还在学习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")

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

我将不胜感激!

答案

[您可以使用正则表达式将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'}

以上就是本文的全部内容,希望对大家的学习有所帮助,版权归原作者或者来源机构所有,感谢作者,如果未能解决你的问题,请参考以下文章。

将字节数组转换为String(Java)(示例代码)

VS2017 Intelligense C++ 设置的几个重点

SAS:将字符变量转换为数字,如果输入的某些字段只有0,则保持全0

将字符串转换为带有附加时间的Oracle日期

将逗号分隔的字符串转换为Python中的列表