理想的には、インストールにスーパーユーザーアクセスを必要としないモジュールまたはライブラリが必要です。自分の作業環境での特権は限られています。
OpenOfficeにはRTFリーダーがあります。pythonを使用してOpenOfficeのスクリプトを作成できます 詳細はこちらを参照 。
Windowsで魔法のCOMオブジェクトを使用して、ms-binaryのにおいがするものをすべて読み取ってみてください。私はそれをお勧めしません。
実際の生データの解析はおそらくそれほど難しくありません この例を参照 .bat/QBasicで記述されています。
DocFrac は、RTF、HTML、テキスト間の無料のオープンソースコンバーターです。 Windows、Linux、ActiveX、およびDLLプラットフォームが利用可能です。Pythonでラップするのはおそらくかなり簡単でしょう。
RTF :: TEXT :: Converter -RTFをテキストに変換するためのPerl拡張機能(問題がある場合) withg DocFrac)。
Microsoftによる公式のリッチテキスト形式(RTF) 仕様 、バージョン1.7。
幸運を祈ります(あなたの作業環境では限られた特権で)。
私はこれを行うことができるPythと呼ばれるライブラリに取り組んでいます:
http://pypi.python.org/pypi/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マークアップラネボウの印からマークアップすることもできます。また、latexおよびpdf出力の実験的サポートを制限しています。 。RTFサポートは かなり堅牢 -さまざまなバージョンのWordで生成されたRTFファイルを読み取るために、本番環境で使用します。 OpenOffice、Mac TextEdit、EIOfficeなど。
チェックアウトしました pyrtf-ng ?
更新:解析機能は、Subversionチェックアウトを行うと利用できますが、フル機能であるかどうかはわかりません。 (rtfng.parser.base
モジュール。)
次に、正規表現を使用してrtfをテキストに変換するスクリプトへのリンクを示します。 RTF string からテキストを抽出するための正規表現)
また、githubのリンクを更新しました: Github link
私はちょうど pyrtflib に出くわしました-それに関するドキュメントは(少し)ありません、それはそれをインストールして、組み込みのhelp()関数を使用して何が利用可能で何が何であるかを調べるケースです。
Rtf.Rtf2Html.getHtml()関数を少し試してみたところ、十分うまくいきました。私はRtf2Txt関数を試していませんが、rtfをプレーンテキストに変換するという簡単な性質を考えると、期待どおりに機能するはずです。
万能なライブラリ pyrtf-ng があり、RTF処理します。
PyRTF-ng 0.9.1はmy RTFドキュメントのいずれも解析していません。どちらもParsingExceptionを使用しています。最初のドキュメントはOpenOffice 3.4で生成され、2番目のドキュメントはMac TextEditで生成されました。 。
Pyth 0.5.6は両方のドキュメントで問題なく解析されましたが、キリル文字は適切に処理されていません。
しかし、各エディターは他のエディターのドキュメントを問題なく正しく開くため、すべてのライブラリーのrtfサポートは弱いようです。
だから私はブラックジャックとフッカーで自分のパーサーを書いています。
(両方のファイルをアップロードしたので、RTFライブラリを自分で確認できます: http://yadi.sk/d/RMHawVdSD8O9http: //yadi.sk/d/RmUaSe5tD8OD )
Mac
を使用している場合は、RTF
ファイルを変換できますfile.rtf
からTXT
からCLI
へ:
textutil -convert txt file.rtf
自分でコーディングしようとしていたことと同じことに遭遇しました。簡単なことではありませんが、コマンドラインアプリを購入することにしたときに持っていたものは次のとおりです。その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
逆に、PythonからRTFを簡単に作成したい場合は、サードパーティのモジュール rtflib を使用できます。これはかなり新しく不完全なモジュールですが、それでも非常に強力で便利です。以下は、「hello world」をリッチテキストでRTFと呼ばれるhelloworld.rtfに書き込む例です。これは非常に原始的な例であり、モジュールを使用して色、イタリック、テーブル、およびRTFファイルへのリッチテキストの他の多くの側面。
from rtflib import *
file = RTF("helloworld.rtf")
file.startfile()
file.addstrict()
file.addtext("hello world")
file.writeout()