python读取rtf文件中指定的内容_用于从RTF字符串中提取文本的正则表达式

本文介绍了一种用Python编写的脚本,该脚本利用正则表达式处理RTF文件,跳过指定的目标组和可忽略组,处理特殊字符。虽然不是完整的RTF解析器,但对于简单的文档来说已经足够。更新后的脚本适用于Python 3.x。
摘要由CSDN通过智能技术生成

在RTF中,{和}标记一个组。组可以嵌套。\标记控制字的开头。控制字以空格或非字母字符结尾。控制字后面可以有一个数字参数,中间没有定界符。一些控制字还带有文本参数,以“;”分隔。这些控制字通常在自己的组中。

我认为我已经设法制定出可以处理大多数情况的模式。

\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?

但是在您的模式上运行时会留下一些空间。

通过RTF规范(其中的一些规范),我发现纯正则表达式剥离器存在很多陷阱。最明显的一个是应忽略某些组(页眉,页脚等),而其他组应进行渲染(格式化)。

我编写了一个Python脚本,该脚本应该比上面的正则表达式更好:

def striprtf(text):

pattern = re.compile(r"\\([a-z]{1,32})(-?\d{1,10})?[ ]?|\\'([0-9a-f]{2})|\\([^a-z])|([{}])|[\r\n]+|(.)", re.I)

# control words which specify a "destionation".

destinations = frozenset((

'aftncn','aftnsep','aftnsepc','annotation','atnauthor','atndate','atnicn','atnid',

'atnparent','atnref','atntime','atrfend','atrfstart','author','background',

'bkmkend','bkmkstart','blipuid','buptim','category','colorschememapping',

'colortbl','comment','company','creatim','datafield','datastore','defchp','defpap',

'do','doccomm','docvar','dptxbxtext','ebcend','ebcstart','factoidname','falt',

'fchars','ffdeftext','ffentrymcr','ffexitmcr','ffformat','ffhelptext','ffl',

'ffname','ffstattext','field','file','filetbl','fldinst','fldrslt','fldtype',

'fname','fontemb','fontfile','fonttbl','footer','footerf','footerl','footerr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值