我有一个csv文件,其中包含如下所示的服务器列表:
92912,";172.83.40.219〃"系统Object[]"系统Object[]"Canada#944"ca944.nordvpn.com"0"CA"加拿大";
我需要从中提取几个值。我正在用csv阅读器打开文件,但如果我试图访问除第一次使用索引之外的任何元素,例如行[1](ip地址(,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
> ...
有没有一种方法可以在没有for循环的情况下访问值?
尝试
行=下一行(reader_data(;
或
row=reader_data.next((;
它应该一行接一行地读取整行,然后你可以随心所欲地执行第[1]行。
两个选项:首先你可以将放入列表
with open('servers.csv') as f:
read_data = csv.reader(f)
read_data_list = list(read_data)
ip = read_data_list[0][1]
第二个选择,也是对我来说最好的是使用熊猫
import pandas as pd
df = pd.read_csv ('servers.csv', sep=',')
ip = df.columns[1]
每一行都是一个条目列表,您可以使用其索引访问这些条目。所以你用row[1]
获取IP地址的想法应该有效,也许你只是在错误的地方访问了它。这将输出csv文件中每一行的IP地址:
with open('servers.csv') as f:
read_data = csv.reader(f)
for row in read_data:
print(row[1]) # IP address