试图在python中读取一个非常大的文本列表[重复]

Posted

技术标签:

【中文标题】试图在python中读取一个非常大的文本列表[重复]【英文标题】:Trying to read an extremely large text list in python [duplicate] 【发布时间】: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:文件对象是可迭代的。 对于这个错误,可能不是文件大小引起的,可能是因为该行有一些奇怪的字符。 【参考方案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,我认为在处理文件中的表情符号时会感到困惑。

以上是关于试图在python中读取一个非常大的文本列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

读取存储在文本文件中的列表[重复]

如何在 Python 中读取和删除文件中的前 n 行 - 优雅的解决方案 [重复]

急求:如何用python删除文本中的重复行?

加快在python中读取非常大的netcdf文件

在python中逐行读取一个大的压缩文本文件

在python中批处理非常大的文本文件