如何正确设置fst规则

2024-05-29 10:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我接触了transducers和python,所以我使用默认的FST库。例如,我有一个列表['a','b','c']。如果'b'后跟'c',我需要替换它。我制定了以下规则,但它只在'b'介于'a'和{}之间并且只有这个数组长度时才有效。在

from fst import fst
list = ['a','b','c']
t = fst.FST('example')
for i in range(0,len(list)):
    t.add_state(str(i))

t.initial_state = '0'
t.add_arc('0','0',('a'),('a'))
t.add_arc('0','1',('b'),('d'))
t.add_arc('1','1',('c'),('c'))
t.set_final('1')

print t.transduce(list)

我得到了['a','d','c'] 我需要能够将'b'替换为'd',无论它在哪里。 e、 g.将'b'替换为'l'

^{pr2}$

请帮帮我,谢谢!在


Tags: infromimportadd列表for规则example
1条回答
网友
1楼 · 发布于 2024-05-29 10:42:30

考虑这个函数。。。在

lists = [['m','r','b','l'], 
         ['m','b','l'], 
         ['b','l','o'], 
         ['b','m','o']]

def change(list_, find_this, followed_by, replace_to):
    return_list = list_.copy()
    idx = list_.index(find_this)
    if list_[idx+1] == followed_by:
        return_list = list_.copy()
        return_list[idx] = replace_to
    return return_list

for lst in lists:
    print(change(lst, 'b', 'l', 'o'))

''' output:
['m', 'r', 'o', 'l']
['m', 'o', 'l']
['o', 'l', 'o']
['b', 'm', 'o']
'''

不过,您应该添加其他相关的验证。在

相关问题 更多 >

    热门问题