37

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

4

10 に答える 10

49

私はこれを行うことができる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 の読み取りと書き込み、Nevow のスタンのような Python マークアップからのドキュメントの生成も行うことができ、latex および pdf 出力の実験的サポートは限定的です。その RTF サポートは非​​常に堅牢です。Word、OpenOffice、Mac TextEdit、EIOffice などのさまざまなバージョンで生成された RTF ファイルを読み取るために、実稼働環境で使用しています。

于 2009-11-30T18:07:06.100 に答える
7

OpenOffice には RTF リーダーがあります。Python を使用して OpenOffice のスクリプトを作成できます。詳細については、こちらを参照してください

Windows で魔法の com-object を使用して、ms-binary の匂いがするものを読み取ってみてください。私はそれをお勧めしません。

生データを実際に解析することはおそらくそれほど難しくありません。.bat/QBasic で書かれたこの例を参照してください。

DocFracは、RTF、HTML、およびテキスト間の無料のオープン ソース コンバーターです。Windows、Linux、ActiveX、および DLL プラットフォームが利用可能です。Pythonでラップするのはおそらくかなり簡単でしょう。

RTF::TEXT::Converter - RTF をテキストに変換するための Perl 拡張機能。(DocFrac に問題がある場合)。

公式のリッチ テキスト形式 (RTF)の仕様、バージョン 1.7、マイクロソフト。

頑張ってください (あなたの作業環境での限られた権限で)。

于 2009-08-26T22:10:09.717 に答える
3

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

更新: Subversion チェックアウトを行うと、解析機能を利用できますが、それがどの程度の機能を備えているかはわかりません。(rtfng.parser.baseモジュールを見てください。)

于 2009-08-26T21:01:36.703 に答える
2

正規表現を使用して rtf をテキストに変換するスクリプトへのリンクは次のとおりです: RTF 文字列からテキストを抽出するための正規表現

また、github の更新されたリンク: Github リンク

于 2016-06-28T20:57:54.997 に答える
1

PyRTF-ng 0.9.1 は私の RTF ドキュメントを解析していません。どちらも ParsingException が発生しています。最初のドキュメントは OpenOffice 3.4 で生成され、2 番目のドキュメントは Mac TextEdit で生成されました。

Pyth 0.5.6 は両方のドキュメントを問題なく解析しましたが、キリル記号を適切に処理していません。

しかし、各エディターは他のエディター ドキュメントを問題なく正しく開くため、すべてのライブラリは rtf サポートが弱いようです。

だから私はブラックジャックと売春婦を使って自分のパーサーを書いています。

(両方のファイルをアップロードしたので、RTF ライブラリを自分で確認できます: http://yadi.sk/d/RMHawVdSD8O9 http://yadi.sk/d/RmUaSe5tD8OD )

于 2012-08-15T08:22:55.157 に答える
1

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

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

于 2015-04-24T08:24:15.480 に答える
1

汎用の RTF 処理に適したライブラリpyrtf-ngがあります。

于 2009-08-26T21:01:33.193 に答える
-2

逆に、Python から簡単に RTF を書きたい場合は、サードパーティ モジュールrtflibを使用できます。これはかなり新しく不完全なモジュールですが、それでも非常に強力で便利です。以下は、「hello world」をリッチ テキストで helloworld.rtf という RTF に書き込む例です。これは非常に原始的な例であり、このモジュールを使用して、RTF ファイルに色、斜体、表、およびリッチ テキストの他の多くの側面を追加することもできます。

from rtflib import *
file = RTF("helloworld.rtf")
file.startfile()
file.addstrict()
file.addtext("hello world")
file.writeout()
于 2011-06-15T05:55:50.730 に答える
-2

自分でコーディングしようとしていたのと同じことに遭遇しました。それほど簡単ではありませんが、コマンドライン アプリを使用することを決めたときに私が持っていたものは次のとおりです。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
于 2009-10-15T17:22:44.803 に答える