我有一些带有不同未知编码的文本文件。现在,我必须打开一个二进制文件来首先检测编码,然后使用该编码再次打开它。

  bf = open(f, 'rb')
  code = chardet.detect(bf.read())['encoding']
  print(f + ' : ' + code)
  bf.close()
  with open(f, 'r', encoding=code) as source:
    texts = extractText(source.readlines())
  source.close()
  with open(splitext(f)[0] + '_texts.txt', 'w', encoding='utf-8') as dist:
    dist.write('\n\n'.join('\n'.join(x) for x in texts))
  dist.close()


那么有没有更好的方法来解决这个问题呢?

最佳答案

无需重新打开和重新读取文件,您只需解码已阅读的文本即可:

with open(filename, 'rb') as fileobj:
    binary = fileobj.read()
probable_encoding = chardet.detect(binary)['encoding']
text = binary.decode(probable_encoding)

关于python - 有没有更好的方法来处理python中的文件编码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46202860/

10-12 17:52