是否有用于将RTF转换为纯文本的Python模块?

是否有用于将RTF转换为纯文本的Python模块?,python,text,rtf,Python,Text,Rtf,理想情况下,我想要一个不需要超级用户访问才能安装的模块或库;在我的工作环境中,我的权限有限。有一个很好的库,可以处理多用途RTF。您签出了吗 更新:如果您执行Subversion签出,解析功能是可用的,但我不确定它的功能有多全面。(查看rtfng.parser.base模块。)OpenOffice有一个RTF阅读器。您可以使用python编写OpenOffice的脚本 您可能可以尝试在Windows上使用magic com对象来读取任何带有ms二进制文件味道的内容。不过我不建议这样做 实际上,用

理想情况下,我想要一个不需要超级用户访问才能安装的模块或库;在我的工作环境中,我的权限有限。

有一个很好的库,可以处理多用途RTF。

您签出了吗


更新:如果您执行Subversion签出,解析功能是可用的,但我不确定它的功能有多全面。(查看
rtfng.parser.base
模块。)

OpenOffice有一个RTF阅读器。您可以使用python编写OpenOffice的脚本

您可能可以尝试在Windows上使用magic com对象来读取任何带有ms二进制文件味道的内容。不过我不建议这样做

实际上,用.bat/QBasic编写的原始数据解析可能并不困难

是RTF、HTML和文本之间的免费开源转换器。Windows、Linux、ActiveX和DLL平台可用。用python将其封装起来可能非常容易

-用于将RTF转换为文本的Perl扩展。(以防您在G DocFrac方面遇到问题)

官方富文本格式(RTF),版本1.7,由Microsoft提供


祝你好运(在你的工作环境中拥有有限的特权)。

我遇到了同样的事情,当时我正试图自己编写代码。这并不是那么容易,但以下是我决定使用命令行应用程序时的情况。它是ruby,但是您可以很容易地适应python。 有一些标题垃圾需要清理,但您或多或少可以看到这个想法

f = File.open('r.rtf','r')
 b=0
 p=false
 str = ''
 begin
    while (char = f.readchar)
        if char.chr=='{'
   b+=1 
   next
  end
        if char.chr=='}'
   b-=1 
   next
  end
  if char.chr=='\\'
   p=true
   next
  end
  if p==true && (char.chr==' ' or char.chr=='\n' or char.chr=='\t' or char.chr=='\r')
   p=false 
   next
  end
  if p==true && (char.chr=='\'')
#this is the source of my headaches. you need to read the code page from the header and encode this.
   p=false 
   str << '#'
   next
  end
  next if b>2
  next if p
  str << char.chr
    end
rescue EOFError
end
f.close
f=File.open('r.rtf','r')
b=0
p=假
str=''
开始
while(char=f.readchar)
如果char.chr=='{'
b+=1
下一个
结束
如果char.chr=='}'
b-=1
下一个
结束
如果char.chr=='\\'
p=真
下一个
结束
如果p==true&&(char.chr==''或char.chr='\n'或char.chr='\t'或char.chr='\r')
p=假
下一个
结束
如果p==true&&(char.chr=='\'')
#这是我头痛的根源。您需要从标题中读取代码页并对其进行编码。
p=假
str2
下一个如果p

str我一直在开发一个名为Pyth的库,它可以做到:

将RTF文件转换为纯文本如下所示:

from pyth.plugins.rtf15.reader import Rtf15Reader
from pyth.plugins.plaintext.writer import PlaintextWriter

doc = Rtf15Reader.read(open('sample.rtf'))

print PlaintextWriter.write(doc).getvalue()

Pyth还可以生成RTF文件、读取和写入XHTML、从Python标记生成文档(la Nevow的stan),并且对latex和pdf输出的实验支持有限。它的RTF支持是——我们在生产中使用它来读取各种版本的Word、OpenOffice、Mac TextEdit、EIOffice等生成的RTF文件。

相反,如果您想从Python轻松编写RTF,可以使用第三方模块。这是一个相当新和不完整的模块,但仍然非常强大和有用。下面是一个将富文本中的“helloworld”写入名为helloworld.RTF的RTF的示例。这是一个非常原始的示例,该模块还可以用于向RTF文件添加颜色、斜体、表格和其他许多方面的富文本

from rtflib import *
file = RTF("helloworld.rtf")
file.startfile()
file.addstrict()
file.addtext("hello world")
file.writeout()
0.9.1没有解析任何我的RTF文档,都有ParsingException。 第一个文档是用OpenOffice 3.4生成的,第二个是用Mac TextEdit生成的

0.5.6解析两个文档时没有问题,但没有正确处理西里尔字母符号

但是每个编辑器都能正确地打开另一个编辑器文档,而且没有任何问题,因此所有库似乎都缺乏rtf支持

所以我正在用21点和胡克编写自己的解析器

(我已经上传了这两个文件,所以你可以自己查看RTF库:)

我刚刚遇到过-关于它没有太多(任何)文档,这有点像是安装它,然后使用内置的help()函数找出什么是可用的,什么都可以做


话虽如此,在我对其rtf.Rtf2Html.getHtml()函数的一次小小的试运行中,它运行得相当顺利。我没有尝试过Rtf2Txt函数,但考虑到将rtf转换为纯文本的简单性质,它应该可以很好地满足我的期望。

这里有一个链接,指向使用正则表达式将rtf转换为文本的脚本:

此外,还更新了github上的链接:

如果您在
Mac
,您可以从
CLI
RTF
文件
file.RTF
转换为
TXT
,如下所示:

textutil -convert txt file.rtf

谢谢,但是pyrtf ng的问题是它对于生成RTF文件很有用,而不是解析它们。我从它的SourceForge页面下载了它(Google代码的下载标签下没有任何内容),这是我能找到的唯一功能。@tony,你看过了吗?当Google代码托管的项目还没有下载时,请浏览源代码谢谢我在OpenOffice中打开了该文档,并将其保存为纯文本文件。这可能是最简单的方法。谢谢你提醒我这是我的工作环境。我请求sudo访问。到RTF::TEXT::Converter的链接已断开。python邮件列表上讨论的链接也是如此。这就是为什么链接的答案是不鼓励…感谢你指出它,我修复了其中一个链接。遗憾的是,另一个已被删除。DocFrac仍然有效,但不支持pt br特殊字符。Microsoft的RTF规范现在的作用是:您可以使用
easy\u install
--user
选项安装Python包,而无需权限。这是最好的。。。它对我来说就像一个符咒!!链接死了,你还有它们吗?从那以后,给了Rtf2Txt.getText()函数一次尝试,它工作得很好-我使用它并不是一个穷尽的边缘案例测试,但我测试的所有案例都导致它给了我预期的输出,它与Python 3不兼容-(@Epoc,为了使它与python3兼容,我们做了一些工作。我的repo中有一个fork,您可以使用
pip-install-git安装它+https://github.com/robertour/pyth@pyth-py3
。您可以看到一些讨论。pascal和python…在同一代码中!