【问题标题】:shorting console output via csv通过 csv 缩短控制台输出
【发布时间】:2020-05-14 04:05:24
【问题描述】:

我能够从 csv 文件中获取内容:

import csv

with open("C:/Users/user/Desktop/tst/test.csv") as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')
    next(csv_reader)

    for line in csv_reader:
        print(line[0])

得到我的第一 (0) 行。到目前为止一切顺利,但现在的输出是:

  1. 一个
  2. b
  3. c

那么我如何获得这些 a、b 和 c? 我试图将它们添加到列表中,但根本不起作用

示例: 我们有一个路径,名称——在路径下写了 3 个文件路径。 我可以使用以下代码访问这些路径:上面的代码。 所以我得到了三个路径 在他们中间 如何获得第一条路径?

我只需要 testpath1,但我的代码得到了每条路径

【问题讨论】:

  • 嗨,你能更好地解释一下你期望的输出吗?您可以从line[0] 访问字符串,就像访问它以打印它们一样。
  • 嘿@LittleDuck19,你能附上你正在解析的文件中的样本吗?
  • 请看Edit @mrVoid

标签: python file csv output


【解决方案1】:

您是否尝试过使用 Pandas 读取 csv 并进行探索。

【讨论】:

  • 不,真的。谢谢,我会调查的!
【解决方案2】:

您可以将结果累积在这样的列表中:

my_list = []
for line in csv_reader:
    my_list.append(line[0])

然后像这样使用它:

for item in my_list:
    do_something(item)

但是,您可以从一开始就这样做并跳过额外的列表:

for line in csv_reader:
    do_something(line[0])

编辑:

如果您只需要第一项,您可以使用next 来抓取第一行(就像您已经使用next 来跳过标题一样):

next(csv_reader) # here you are pulling the first line without using it

line = next(csv_reader)
print(line) # this gives you the second line: a

line2 = next(csv_reader)
print(line2) # b
print(next(csv_reader)) # c
next(csv_reader) # if you call it after the file is finished you'll get a StopIteration exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

【讨论】:

  • 同样的问题:我得到了更多的输出。所以我的列表包含 a,b,c 但如何只访问 a?
  • 您访问循环的第一次运行。您只想访问 a 而不是 b 和 c?
  • 查看我在问题中的编辑,现在应该清楚了:)
  • 感谢您解决了我的问题,如何摆脱该错误?我尝试了类似:row_count = sum(1 for row in csv_reader) 用于 csv 文件中的行数。我必须把它变成一个 for 循环,对吗?
  • 您可以使用 try 忽略错误:... except: pass 块,请参阅stackoverflow.com/q/730764/154762
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2012-12-26
相关资源
最近更新 更多