试图在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 的文本文件,但实际上它被编码为 unicode 或 latin1。如果它包含重音字符,它肯定不是 ascii 文件。
您使用哪个版本的python? Python 2 处理文本的方式与 Python 3 不同。
如果不清楚,我通常使用 notepad++ 来检查文本文件中使用了哪种编码。
一旦您知道使用了哪种编码,您就可以像 here 这样指定它with open('list.txt', encoding='utf-8') as f_line:
【讨论】:
感谢它现在的工作 :) 我使用的是 Python 3,我认为在处理文件中的表情符号时会感到困惑。以上是关于试图在python中读取一个非常大的文本列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章