这是我的数据示例,
match_type search campaign group
phrase physicians Branded System phrase
phrase locations Branded System phrase
exact find Non-Branded Brand exact
我正在使用csv.reader读取我拥有的csv。
with open("pos_input.csv") as csvfile:
inputcsv = csv.reader(csvfile, delimiter=',')
for row in inputcsv:
match = row[1:2]
search = row[2:3]
campaign = row[3:4]
ad = row[4:]
然后我将csv中的每一列分配给一个对象。例如,第一列保存有关每一行的值。因此,
print(campaign)
将导致
['Campaign']
['Branded System']
['Branded System']
['Non-Branded Brand']
campaign是列标题,然后的每个字符串代表行输入。
我的问题是,如何仅访问“非品牌”。我已经尝试过了,
campaign[3]
但会导致错误
IndexError: list index out of range
我需要在这里进行一些转换吗?
答案 0 :(得分:1)
看起来您的目标是分隔csv的列。首先,请确保csv文件以逗号分隔:
match_type,search,campaign,group
phrase,physicians,Branded System,phrase
phrase,locations,Branded System,phrase
exact,find,Non-Branded Brand,exact
然后,您需要遍历csv.reader返回的对象,并使用该对象遍历文件的每一行。在每次迭代中,您将按从0开始的相应索引访问每一列。例如,第三列是索引2。因此,要保存“ campaing”列,只需使用索引2。下面的代码保存所有列,但这并不安全,因为请注意,如果您打开的列数较少的文件,则会引发异常。
import csv
match = []
search = []
campaign = []
group = []
with open("pos_input.csv") as csvfile:
inputcsv = csv.reader(csvfile, delimiter=',')
for row in inputcsv:
match.append(row[0])
search.append(row[1])
campaign.append(row[2])
group.append(row[3])
因此“非品牌品牌”是露营品牌[3]:
print(campaign[3])
结果:
Non-Branded Brand
答案 1 :(得分:0)
在大多数编程语言中,列表从0开始。因此,列表中的第一项将是campaign[0]
。因此,第四项Non-Branded Brand
是通过campaign[3]
访问的。
答案 2 :(得分:0)
您的数据提取错误。通过使用切片,您可以为列值创建1元素列表。最肯定不是您想要的。最重要的是,您不会保留各个行的提取值。因此,您没有“非品牌品牌”。
改为使用以下类似内容:
with open("pos_input.csv") as csvfile:
data = list(csv.reader(csvfile, delimiter=','))
print(data[3][2]) # to access the 4th row, 3rd column