【发布时间】:2023-03-11 16:48:01
【问题描述】:
我有一个 csv 文件,其中的服务器列表如下所示:
929912,"172.83.40.219","System.Object[]","System.Object[]","Canada#944","ca944.nordvpn.com","0","CA","加拿大”
我需要从中提取几个值。我正在使用 csv 阅读器打开文件,但是如果我尝试访问除第一次使用索引之外的任何元素,例如 row[1](ip address),python 将返回 IndexError。 但是,如果我循环浏览该行,我会得到每个元素:
with open('servers.csv') as f:
read_data = csv.reader(f)
for row in read_data:
for i in row:
print(i)
> 929912
> 172.83.40.219
> ...
有没有办法在没有循环的情况下访问值?
【问题讨论】:
-
如果我有一个仅包含该示例行的 csv 文件,
row[1]有效。但是,如果我在那里也有一个空行,那么该行显然只有一个元素,row[1]失败。你确定这不会发生在你的情况下吗?print(row)在你做row[1]失败时会说什么? stackoverflow.com/help/minimal-reproducible-example -
如果我只做 print(row) 我会得到一个完整的值列表 [929912,"172.83.40.219","System.Object[]","System.Object[] ","Canada#944","ca944.nordvpn.com","0","CA","Canada"]。所以文件中的所有其他值字符串都作为一个列表处理,我不能通过索引从中调用值,但我可以通过循环获取它。
-
我完全不明白你想要达到什么目的。
row显然有足够的元素不能引发IndexError。你在哪里以及如何得到这个错误?什么是完整的追溯?请向我们提供minimal, reproducible example。
标签: python list csv index-error