0

我正在使用 pdfminer 工具将 pdf 转换为 .csv(文本),并且该工具中的子命令之一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 回答