gpt4 book ai didi

python - 识别字符串中的符号

转载 作者:行者123 更新时间:2023-11-30 22:53:49 25 4
gpt4 key购买 nike

我正在实现一个简单的 DSL。我有以下输入字符串:

txt = 'Hi, my name is <<name>>. I was born in <<city>>.'

我有以下数据:

{ 
'name': 'John',
'city': 'Paris',
'more': 'xxx',
'data': 'yyy',
...
}

我需要实现以下功能:

def tokenize(txt):
...
return fmt, vars

我从哪里得到:

fmt = 'Hi, my name is {name}. I was born in {city}.'
vars = ['name', 'city']

fmt可以传给str.format()函数,和vars是检测到的标记的列表(以便我可以在数据中执行查找,这可能比我描述的更复杂,因为它可以拆分为多个命名空间)

之后,处理格式就很简单了:

def expand(fmt, vars, data):
params = get_params(vars, data)
return fmt.format(params)

哪里get_params正在执行简单的数据查找,并返回如下内容:

params = {
'name': 'John',
'city': 'Paris',
}

我的问题是:

如何实现标记化?知道分隔符是 << 后,如何检测 token 和>> ?我应该使用正则表达式,还是有更简单的路径?

这类似于 pystache ,甚至.format本身正在做,但我想要一个轻量级的实现。在此阶段,稳健性并不是​​很重要。

最佳答案

是的,这是正则表达式的完美目标。找到开始/结束引号,用大括号替换它们,并将符号名称提取到列表中。您对法律符号有详细的描述吗?您需要进行如下搜索:

/\<\<([a-zA-Z]+[a-zA-Z0-9_]*)\>\>/

对于经典变量名称(请注意,这不包括前导下划线)。您对正则表达式足够熟悉吗?可以从这里获取它吗?

关于python - 识别字符串中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064044/

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