web-dev-qa-db-ja.com

Python変換用のモジュールRTFをプレーンテキストに変換するためのモジュールはありますか?

理想的には、インストールにスーパーユーザーアクセスを必要としないモジュールまたはライブラリが必要です。自分の作業環境での特権は限られています。

34
Tony

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。

幸運を祈ります(あなたの作業環境では限られた特権で)。

7
Paweł Polewicz

私はこれを行うことができる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など。

49
Brendon

チェックアウトしました pyrtf-ng

更新:解析機能は、Subversionチェックアウトを行うと利用できますが、フル機能であるかどうかはわかりません。 (rtfng.parser.baseモジュール。)

3
Vinay Sajip

次に、正規表現を使用してrtfをテキストに変換するスクリプトへのリンクを示します。 RTF string からテキストを抽出するための正規表現)

また、githubのリンクを更新しました: Github link

2
ChrisE

私はちょうど pyrtflib に出くわしました-それに関するドキュメントは(少し)ありません、それはそれをインストールして、組み込みのhelp()関数を使用して何が利用可能で何が何であるかを調べるケースです。

Rtf.Rtf2Html.getHtml()関数を少し試してみたところ、十分うまくいきました。私はRtf2Txt関数を試していませんが、rtfをプレーンテキストに変換するという簡単な性質を考えると、期待どおりに機能するはずです。

1
Blair

万能なライブラリ pyrtf-ng があり、RTF処理します。

1
cleg

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

1

Macを使用している場合は、RTFファイルを変換できますfile.rtfからTXTからCLIへ:

textutil -convert txt file.rtf
1
Franco Piccolo

自分でコーディングしようとしていたことと同じことに遭遇しました。簡単なことではありませんが、コマンドラインアプリを購入することにしたときに持っていたものは次のとおりです。その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
0
Josep Valls

逆に、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()
0
codedude