如何在python中从大型CSV文件中读取所需的行

问题描述 投票:0回答:1

我正在尝试从CSV文件中搜索数据,然后将数据传递给另一个python代码。CSV文件具有100000+行,我希望根据自己的选择传递所请求的数据。

实际代码:

input_file = 'trusted.csv'
users = []
with open(input_file, encoding='UTF-8') as f:
    rows = csv.reader(f,delimiter=",",lineterminator="\n")
    next(rows, None)
    for row in rows:
      user = {}
      user['username'] = row[0]
      user['id'] = int(row[1])
      user['access_hash'] = int(row[2])
      user['name'] = row[3]
      users.append(user)

将数据解析为代码:

g_index = input("Enter a Number: ")
target_group=groups[int(g_index)]
target_group.access_hash

[实际代码将解析CSV文件中的全部行,我正在尝试寻找一种可以传递数据的python代码的解决方案-例如从11到20行,同样从50到100行。] >

我尝试了以下代码,但在将数据解析为另一个python代码时收到错误:

import CSV


input_file = 'lucky280.csv'

start = 10
stop = start + 10
users = []
with open(input_file, encoding='UTF-8') as f:
    rows = csv.reader(f,delimiter=",",lineterminator="\n")
    for  i, line in enumerate(rows):
        if i >= start:
            users.append(line)
        if i > stop:
            break
            for row in rows:
              user = {}
              user['username'] = row[0]
              user['id'] = int(row[1])
              user['access_hash'] = int(row[2])
              user['name'] = row[3]
              users.append(user)

错误:追溯(最近一次通话):文件“”,第10行,在打印(“添加{}”。format(user ['id']))TypeError:列表索引必须是整数或切片,而不是str

如果我使用实际代码,则文件读取可以正常工作,但是它将解析文件中的所有数据。

请帮助!

推荐后我也尝试过

input_file = 'lucky280.csv'
users = []
from itertools import islice
with open(input_file, encoding='UTF-8') as f:
    rows = csv.reader(f,delimiter=",",lineterminator="\n")
    rowiter = islice(rows, 3, 5)
    for item in rowiter:
            for row in rows:
              user = {}
              user['username'] = row[0]
              user['id'] = int(row[1])
              user['access_hash'] = int(row[2])
              user['name'] = row[3]
              users.append(user)

得到以下错误

IndexError Traceback (most recent call last)

<ipython-input-108-9f4099c2e53d> in <module>()
     10               user = {}
     11               user['username'] = row[0]
---> 12               user['id'] = int(row[1])
     13               user['access_hash'] = int(row[2])
     14               user['name'] = row[3]

IndexError: list index out of range

我正在尝试从CSV文件中搜索数据,然后将数据传递给另一个python代码。 CSV文件有100000+行,我希望根据自己的选择传递所请求的数据。实际...

python-3.x
1个回答
0
投票

您可以使用islice中的itertools

© www.soinside.com 2019 - 2024. All rights reserved.