0

私はpdfminerツールを使用してpdfを.csv(テキスト)に変換していますが、ツールのサブコマンドの1つは、pdfinterp.py文字列から文字列への変換にCStringIOとStringIOを引き続き使用しています-

import re
try:
    from CStringIO import StringIO 
except ImportError:
    from StringIO import StringIO

私は Python 3 を使用しているので、io と io.StringIO に変更する必要があることを認識しています。

pdfinterp上記のコマンドを Python 3 で機能させるには、どのように正確に言い換える必要がありますか。

4

1 に答える 1

0

インポート ブロックを拡張して、すべてのバージョン (Python 2.x または 3.x) と互換性を持たせることができます。すべての try/except ブロックのために醜いですが、動作します

try:
    from CStringIO import StringIO 
except ImportError:
    try:
        from StringIO import StringIO
    except ImportError:
        from io import StringIO

または(少し良い)

import sys
if sys.version_info < (3,)
   try:
       from CStringIO import StringIO 
   except ImportError:        
        from StringIO import StringIO
else:
     from io import StringIO

Python 3 にBytesIOもあることに注意してください。これは、バイナリ データとテキスト データが異なるためです。そのStringIOため、バイナリ データを渡すために使用すると失敗します。

于 2016-09-13T18:06:20.633 に答える