我试图找到一种从字符串中去除BBCode的方法。我发现的模块(BBCode和Post Markup)似乎只将它们翻译成HTML而不是仅删除BBCode并返回一个干净的字符串。如果我错过了某些内容,其中一个实际上就是我要问的问题我会喜欢它的方向:)
否则,有没有办法从字符串中删除BB代码并返回纯文本?
答案 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ᵩ的基于正则表达式的answer和postmarkup
都遇到了同样的问题 - 无法区分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