簡體   English   中英

僅使用python中的csv閱讀器讀取csv文件的前N行

[英]only reading first N rows of csv file with csv reader in python

我正在將多個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行?

最簡短,最慣用的方式可能是使用itertools.islice

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

您可以添加一個計數,然后在達到200時中斷,或者添加一個range為200的循環。

row s row的for循環開始之前定義一個變量:

count = 0

然后在循環中:

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

使用readlines()應該可以做到。

with open(item, encoding = 'latin-1').readlines()[0: 199] as d:
    reader1=csv.reader(d)

Pandas是用於處理數據(例如CSV)的流行模塊。 使用大熊貓可以限制行數。

import pandas as pd
# If you only want to read the first 200 (non-header) rows:
pd.read_csv(..., nrows=200)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM