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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符串转换为带有模式的几个变量相关的知识,希望对你有一定的参考价值。

我还在学习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'}

以上是关于将字符串转换为带有模式的几个变量的主要内容,如果未能解决你的问题,请参考以下文章

需要将字节数组/二进制消息从 UDP DatagramPacket 转换为 java 中的几个字段

JavaScript中严格模式"use strict";需注意的几个雷区:

如何将Matlab中的数值型变量转换成字符型变量

使 PHP 代码更加简洁的几个小技巧

在创建VSCode片段时,如何将变量转换为title-case(如TitleCase)?

常用的几个JQuery代码片段