从字符串中删除BBCode

时间:2015-08-09 04:33:15

标签: python bbcode

我试图找到一种从字符串中去除BBCode的方法。我发现的模块(BBCode和Post Markup)似乎只将它们翻译成HTML而不是仅删除BBCode并返回一个干净的字符串。如果我错过了某些内容,其中一个实际上就是我要问的问题我会喜欢它的方向:)

否则,有没有办法从字符串中删除BB代码并返回纯文本?

2 个答案:

答案 0 :(得分:2)

您的答案实际上在bbcode模块中。遗憾的是,相关方法不在documentation中,但如果您搜索代码,则会在Parser.strip()进行搜索。例如:

import bbcode

parser = bbcode.Parser()
code = "[code]a = [1, 2, 3, 4, 5][/code]"
plain_txt = parser.strip(code)
print(plain_txt)
'a = [1, 2, 3, 4, 5]'

不幸的是,Robᵩ的基于正则表达式的answerpostmarkup都遇到了同样的问题 - 无法区分BBCode([list][*]Item 1[*]Item 2[/list][color=red]I hate color-blind people![/color],以及我上面使用的嵌入式代码示例(它们都返回a =)或类似

的行
I'm feeling sad :[ But, eating ice cream cheers me up! :]

只返回

I'm feeling sad :

这是可能的,因为bbcode首先对字符串进行标记,搜索有效的BBCode标记,并将其余部分标识为整个文本的一部分。 Parser.strip()然后抛出BBCode令牌并重新组装文本,而格式化方法将这些令牌转换为XHTML标记,并在适当的时候拼接其余部分。

答案 1 :(得分:0)

根据您的需要,这可能就足够了:

#UNTESTED
import re
with open("some_input_file.txt") as input_file:
    for s in input_file:
        s = re.sub('\[.*?]','',s)
        print s