【问题标题】:How I can convert file with any format to text format using Python 3.6?如何使用 Python 3.6 将任何格式的文件转换为文本格式?
【发布时间】:2017-05-01 06:50:28
【问题描述】:

我正在尝试有一个转换器,可以将任何格式的任何文件转换为文本,这样处理对我来说变得更容易。我使用了 Python textract 库。
这是文档:https://textract.readthedocs.io/en/stable/

我已使用pip 安装它并尝试使用它。但是出现错误,无法理解如何解决它。

>>> import textract
>>> text = textract.process('C:\Users\beta\Desktop\Projects Done With Specification.pdf', method='pdfminer')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

我什至尝试过使用命令而不指定方法。

>>> import textract
>>> text = textract.process('C:\Users\beta\Desktop\Projects Done With Specification.pdf')
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

请告诉我如何根据您的建议解决此问题。如果可能的话,请给我建议解决方案,如果有其他可以方便的方法而不是textract,那么您仍然可以建议我。我想听听。

【问题讨论】:

  • 所以你想从一个文件中提取所有字符串,就像 unix 中的strings 命令?

标签: python python-2.7 python-3.x text-extraction


【解决方案1】:

\ 字符在不同的上下文中具有不同的含义。在 Windows 路径名中,它是目录分隔符。在 Python 字符串中,它引入了转义序列。指定路径时,您必须考虑到这一点。

尝试以下任何一种:

text = textract.process('C:\\Users\\beta\\Desktop\\Projects Done With Specification.pdf', method='pdfminer')
text = textract.process(r'C:\Users\beta\Desktop\Projects Done With Specification.pdf', method='pdfminer')
text = textract.process('C:/Users/beta/Desktop/Projects Done With Specification.pdf', method='pdfminer')

【讨论】:

【解决方案2】:

问题出在字符串

'C:\Users\beta\Desktop\Projects Done With Specification.pdf'

\U 开始一个八字符的 Unicode 转义,例如 '\U00014321`。在您的代码中,转义符后跟字符“s”,这是无效的。

您要么需要复制所有反斜杠,要么在字符串前面加上 r(以生成原始字符串)。

【讨论】:

  • @JafferWilson 那么问题可能是您的文件名中有空格。尝试将文件重命名为“Projects_Done_With_Specification.pdf”并将代码中的路径更新为:“C:\Users\beta\Desktop\Projects_Done_With_Specification.pdf”
  • 我试图删除空格并运行程序.. 有新问题:gist.github.com/JafferWilson/59e0602f62751c96aba91d7047f322ed
  • @JafferWilson 第一个错误发生在 pdf_parser.py",第 31 行。第二个错误发生在 pdf_parser.py",第 20 行。除了第一个文件路径之外,您是否有机会指定另一个文件路径?
  • 不是同一个文件。正如您所说,从文件名中删除空格可能会有所帮助,所以我尝试从文件名中删除空格。
【解决方案3】:

试试encoding='utf-8'

textract.process('C:\Users\beta\Desktop\Projects Done With Specification.pdf', encoding='utf-8')

【讨论】:

    【解决方案4】:

    在您的情况下,错误是由于路径无效。 试试这个,它的工作原理: 'C:\Users\beta\Desktop\Projects Done With Specification.pdf' “或者” 'C:/Users/beta/Desktop/Projects Done With Specification.pdf'

    【讨论】:

      【解决方案5】:
      import textract
      text = textract.process(r'C:\Users\myname\Desktop\doc\an.docx', encoding='utf-8')
      

      这对我有用。试试吧。

      【讨论】:

      • 感谢您的贡献。不过,这个答案虽然不错,但已在 2017 年提供。请避免发布重复的答案。
      猜你喜欢
      • 2021-12-08
      • 2021-12-28
      • 2010-10-20
      • 2012-02-29
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      相关资源
      最近更新 更多