2016-09-13 4 views
0

Я использую инструмент pdfminer для преобразования pdf в CSV (текст), и одна из подкоманд в инструменте pdfinterp.py по-прежнему использует CStringIO и StringIO для строка в строку перевода -работают для бывших функций CStringIO и String IO в Python 3 Pdfinterp (Pdfminer)

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

Я использую Python 3, так что я знаю о необходимости изменения Ио и io.StringIO.

Как именно следует вышеприведенная команда повторно сформулированное в pdfinterp, чтобы сделать его функциональным в Python 3.

ответ

0

вы можете расширить свой импорт блок, чтобы сделать его совместимым со всеми версиями (Python 2.x или 3.x). Гадкий из-за все попробовать/за исключением блоков, но будет работать

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 

Имейте в виду, что питон 3 имеет BytesIO тоже, потому что двоичные данные и текстовые данные отличаются в настоящее время. Поэтому, если StringIO используется для передачи двоичных данных, это не удастся.

+0

Прошло мимо него с первым предложением - THX –

+0

, если он работает, пожалуйста, примите ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^