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