将字符串转换为带有模式的几个变量
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";需注意的几个雷区: