我花了一些时间将标记从lua
转换为hmtl
,但最近我得到了一个特殊情况,这些标记可以嵌套。下面是我的代码的一个快速示例:
from pyparsing import Literal, Word, Suppress, SkipTo, LineEnd, hexnums
text = "|c71d5FFFFI'm saying something in color|cFFFFFFFF then in white |r|r"
def colorize (t):
hexRGB = "".join(list(t.hex)[:6])
return "<span style=\"color:#{};\">{}</span>".format(hexRGB, t.content)
vbar = Literal("|")
eol = LineEnd().suppress()
endTag = ((vbar + (Literal("r")|Literal("R"))|eol))
parser = (
Suppress(vbar + (Literal("c")|Literal("C"))) +
Word(hexnums, exact=8).setResultsName("hex") +
SkipTo(endTag).setResultsName("content") +
Suppress(endTag)
).addParseAction(colorize)
result = parser.transformString(text)
print (result)
我看到了另一个类似的问题Pyparsing: nested Markdown emphasis,但我的问题有点不同,有时没有closetag,而lineEnd充当一个closetag
您可以添加
while
循环来迭代结果,直到找到所有颜色:当
text = "|c71d5FFFFI'm saying something in color|cFFFFFFFF then in white |r|r"
时:输出:
当
text = "|c71d5FFFFI'm saying something in color"
输出:
相关问题 更多 >
编程相关推荐