首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本生成算法

文本生成算法
EN

Stack Overflow用户
提问于 2012-11-27 05:06:49
回答 2查看 433关注 0票数 2

我正在寻找一个算法或一些建议来实现它。

输入:

代码语言:javascript
复制
"{1|2} word {3|4}"

输出:

代码语言:javascript
复制
["1 word 3", "1 word 4", "2 word 3", "2 word 4"]

另外,我想支持嵌套结构- "{1|2{0|1}}" -> ["1", "20", "21"]

我意识到这个问题太笼统了,但我不想付诸实施。也许你看到了类似的东西。

UPD

代码语言:javascript
复制
from pyparsing import *
from collections import deque

s = u"{1|2} {3|4}"

deque = deque()

def mesh_lists(listOne, listTwo):
    result = []
    for l1 in listOne:
        for l2 in listTwo:
            firstWord = str(l1).strip()
            secondWord = str(l2).strip()
            result.append(" " + firstWord + " " + l2 + " ")
    return result

def action(string, pos, token):
    global deque
    deque.append(list(token[0]))

def processDeque():
    global deque
    while len(deque) > 1:
        l1 = deque.popleft()
        l2 = deque.popleft()
        res = mesh_lists(l1,l2)
        deque.appendleft(res)
    return [x.strip() for x in deque[0]]

_lcurl = Suppress('{')
_rcurl = Suppress('}')
_pipe = Suppress('|')
word = Regex("[^{|}]+")
varBlock = Forward()
entry = word | varBlock
varList = Group(entry + ZeroOrMore(_pipe + entry))
varBlock << (_lcurl + Optional(varList) + _rcurl).setParseAction(action)
template = ZeroOrMore(entry)

res = template.parseString(s)
print processDeque()

它只支持“{ only }{AC.26}”结构。没有空话,没有嵌套结构。

EN

回答 2

Stack Overflow用户

发布于 2012-11-27 05:17:01

这个项目看起来适合你:https://github.com/asciimoo/exrex

Exrex是一个工具,它生成与给定正则表达式匹配的所有字符串。

票数 4
EN

Stack Overflow用户

发布于 2016-04-21 13:53:26

已发布的实例包括regex逆变器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13577721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档