gpt4 book ai didi

python - 使用模式将字符串转换为少数变量

转载 作者:行者123 更新时间:2023-12-04 21:01:16 26 4
gpt4 key购买 nike

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

请注意您的 pattern已经包含一些正则表达式控制字符。这些在这里似乎不是问题,但您可能会更好 re.escape pattern先做 re.sub关于转义模式: p = re.sub(r"\\{(.*?)\\}", r"(?P<\1>.*?)", re.escape(pattern))

关于python - 使用模式将字符串转换为少数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113212/

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