【问题标题】:Trying to read an extremely large text list in python [duplicate]试图在python中读取一个非常大的文本列表[重复]
【发布时间】:2017-04-12 11:30:23
【问题描述】:

我目前正在尝试通过删除不相关的数据来缩小大型列表的大小。我目前正在使用

with open("list.txt") as f_line:
    for line in f_line:
       Doing_things()

它目前正在使用较小比例的文件,但是当使用较大的主文件时,它会出现以下错误。

UnicodeDecodeError:“ascii”编解码器无法解码位置 3656 中的字节 0xe2:序数不在范围内(128)

是否有另一种方法可以将列表读入 python。该文件还具有超过 10000 个列表的单个数据点。 感谢您的帮助。

【问题讨论】:

  • 文件大小不是问题。问题是,您打开文件时好像它包含 ASCII 文本,但实际上没有。
  • 我认为问题不在于文件大小。我将此方法用于 30 GB 以上的文件,没有出现故障。文件本身可能存在问题。
  • 首先“大”是一个相对术语。 10000 不是一个重要的数字。从您移植的内容来看,它似乎与文件大小或内存无关,而是编码问题。您应该先将这些行转换为 utf-8。
  • @ettanay:文件对象是可迭代的。
  • 对于这个错误,可能不是文件大小引起的,可能是因为该行有一些奇怪的字符。

标签: python list


【解决方案1】:

原因可能是对文件编码的“误解”。您的 python 解释器需要一个编码为 ascii 的文本文件,但实际上它被编码为 un​​icode 或 latin1。如果它包含重音字符,它肯定不是 ascii 文件。

您使用哪个版本的python? Python 2 处理文本的方式与 Python 3 不同。

如果不清楚,我通常使用 notepad++ 来检查文本文件中使用了哪种编码。

一旦您知道使用了哪种编码,您就可以像 here 这样指定它with open('list.txt', encoding='utf-8') as f_line:

【讨论】:

  • 感谢它现在的工作 :) 我使用的是 Python 3,我认为在处理文件中的表情符号时会感到困惑。
猜你喜欢
  • 2016-01-05
  • 2011-05-06
  • 2015-08-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 2013-10-03
相关资源
最近更新 更多