python 3解释器可能不稳定

时间:2019-04-23 10:01:04

标签: python

嘿,我写这封信是因为遇到一个无法追踪自己的问题。

我正在尝试从一个巨大的csv文件(27.3 GB)中加载一些数据,该文件可以在https://github.com/several27/FakeNewsCorpus处找到,但是每次我尝试运行以下代码时,都会得到一个KeyError'content'在行116454上。据我了解,这应该是因为在obj变量中未设置“内容”字段,但应在其中设置。故障发生的位置与每次运行都一致。

它不仅在此行失败,而且只是失败的第一行。由于单词的长度不为零,因此它可以在其他行上正常工作。我试图将csv字段的最大大小更改为2000000000,因为这也是一个问题。我正在木星笔记本上运行它,“ count”变量仅用于跟踪错误。

Codesnip

def get_words(text) :
        regex = re.compile(r"\w+\'\w+|\w+|\,|\.")
        return set(re.findall(regex, text))

words = set()
count = 0

with open(source, 'r', encoding='utf-8', newline= '') as articles:
    reader = csv.reader(articles)
    hds = next(reader, None) 

    print(hds)

    for row in reader:
        obj = {}
        for hd, val in zip(hds, row):
            obj[hd] = val

        ws, _ = find_urls(lowercase(obj['content'])) <- error here
        ws = get_words(ws)

        words = words | ws
        count = count + 1
    try:
        words.remove('URL')
    except:
        pass

find_url和小写字母功能仅将字符串作为输入并返回更改后的字符串。他们已经过测试。

我也在配备i7英特尔CPU和16 GB内存的华硕笔记本电脑上运行此程序,这也值得一提。 csv文件所在的硬盘驱动器是三星SSD,而且它不到一年的历史,因此它上面应该还没有任何故障页面。 csv文件包含文章,并且content字段绝不能为空,因为这与说文章不包含内容相同。

1 个答案:

答案 0 :(得分:0)

这是一个黑暗的刺探,没有看到您的数据(尤其是臭名昭著的#116454周围的行),但是zip()一旦其中一个迭代器用完就停止。尝试

from itertools import zip_longest

并替换行

    for hd, val in zip(hds, row):
        obj[hd] = val

    for hd, val in zip_longest(hds, row, fillvalue=''):
        obj[hd] = val

看看会发生什么。另外,请阅读docs