【问题标题】:How to select a speicifc colum and row in a csv file如何在 csv 文件中选择特定的列和行
【发布时间】:2017-07-24 02:46:06
【问题描述】:

CSV 文件如下所示

,1,2,3,4,5 1,ITN122A,ITN122A,ICJ122A,SCI092F,DIG102A 2,DIG102A,PIA072C,ENC112A,DIG102A,VBS112A 3,ITN112A,ENC112A,ITN112A,ICJ122A,ITN122A 4,DIG092A,ICJ122A,ITN122A,DIG092A,ITN121A 5,SCI092H,DIG092A,DIG102A,ITN112A,ICJ122A

我要做的是从 CSV 中选择特定的行和列,并将其设置为变量,然后将该数据写入其他 csv 文件。

例如,如果是星期一和下午 12:20,它将选择第 1 行(星期一)和第 4 列(下午 12:20),因此它将选择 DIG092A,然后将该数据写入另一个 csv 文件。

我知道您可以选择行并打印整行/列,但是如何选择特定的行/列。

谢谢你:)

【问题讨论】:

  • 本网站可以帮助您编写代码,但我们通常不会为您编写代码。你能包括你到目前为止所拥有的吗?
  • 显示你的代码。

标签: python csv


【解决方案1】:

我不知道这是否是最好的方法,但我通过阅读 CSV 中的每一行并将其添加到一个大行列表中来处理类似情况。像这样:

import csv
dataList = []
with open('yourfile.csv', 'r') as csvfile:
  csvreader = csv.reader(csvfile)
  for row in csvreader:
     dataList.append(row)
csvfile.close()

然后您可以使用常规 python 列表索引访问每一行和每一列。例如,在您的示例中,您可以:

dataList[2]

得到

[2,DIG102A,PIA072C,ENC112A,DIG102A,VBS112A]

dataList[2][2]

得到

PIA072C

然后按照the documentation 中的说明写入新的 csv 文件。

编辑

正如 cmets 中所讨论的,您可以通过将其添加到它的底部来使其使用星期几和您的 P2:

Monday = 1
P2 = 2

print(dataList[Monday][P2])

使用您的数据,它应该打印:

ITN122A

请注意,Python 从零开始计数,因此“第 2 列”实际上是第三列。如果这令人困惑,也许可以阅读 Python 中的列表索引。 This 看起来不错的介绍。

【讨论】:

  • 非常感谢,我是 python 新手,这很有帮助
  • 我现在如何打印这些数据以便我可以看到它,我只尝试了print dataList[2][2],但它给了我一个错误
  • 你用的是python 3吗?然后你必须做到print(dataList[2][2])
  • 是否可以使用变量代替??所以dataList[Monday[P2]Monday = 1 P2= 2 等等??
  • Traceback (most recent call last): File "C:\attendance\Class.py", line 5, in <module> for row in csvreader: _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?) 使用print(dataList[2][2]) 运行它时出现此错误
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2012-10-06
  • 2018-06-30
  • 2022-11-25
  • 1970-01-01
  • 2018-09-10
相关资源
最近更新 更多