Python中使用csv reader仅读取前N行csv文件

3

我正在将一些csv文件中第二列包含的文本添加到一个列表中,以便稍后对列表中的每个项目执行情感分析。目前,我的代码可以完全处理大型csv文件,但是我在列表中对项目进行情感分析所需的时间太长了,因此我想仅读取每个csv文件的前200行。代码如下:

import nltk, string, lumpy 
import math
import glob
from collections import defaultdict
columns = defaultdict(list)
from nltk.corpus import stopwords
import math
import sentiment_mod as s
import glob

lijst = glob.glob('21cf/*.csv')

tweets1 = []
for item in lijst:
    stopwords_set = set(stopwords.words("english"))
    with open(item, encoding = 'latin-1') as d:
        reader1=csv.reader(d)
        next(reader1)
        for row in reader1:
            tweets1.extend([row[2]])
        words_cleaned = [" ".join([words for words in sentence.split() if 'http' not in words and not words.startswith('@')]) for sentence in tweets1]
        words_filtered = [e.lower() for e in words_cleaned]
        words_without_stopwords = [word for word in words_filtered if not word in stopwords_set]
    tweets1 = words_without_stopwords
    tweets1 = list(filter(None, tweets1))

如何使用csv读取器仅读取每个csv文件的前200行?


为什么不直接添加一个所需范围的 for 循环? - Mick_
你可以像这个问题中那样使用Pandas。 - TayTay
3个回答

14

最简短且最通俗易懂的方法可能是使用itertools.islice

import itertools
...
        for row in itertools.islice(reader1, 200):
            ...

3

您可以添加一个计数器,在达到200时跳出循环,或者添加一个循环,循环范围为range 200。

rowfor循环之前定义一个变量:

count = 0

然后在你的循环中:

count = count + 1
if count == 200: 
    break

3
Pandas 是一个常用的数据处理模块,可用于操作 CSV 文件。使用 pandas,您可以按以下方式限制行数:
import pandas as pd
# If you only want to read the first 200 (non-header) rows:
pd.read_csv(..., nrows=200)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接