我正在尝试使用python从2个.csv文件中提取值。从第一个文件中,我得到一个将在第二个文件中搜索的关键字。找到关键字后,我试图从另一个列中收集值并将它们放入数组中。
这是第一个文件的样子(我从中获取关键字的文件):
Action;ItemID;Title;StartPrice;CustomLabel
Revise;13;some title;990;keyword1
Revise;12;some title;1990;keyword2
Revise;14;some title;2990;keyword3
这是第二个.csv文件的样子:
Keyword;Item_Title;Item_Price;Item_Condition;Item_Link
keyword1;title1;59.0;used;link1
keyword1;title2;130.0;used;link2
keyword1;title3;165.0;used;link3
keyword2;title1a;600.0;used;link1a
keyword2;title2a;800.0;used;link2a
keyword2;title3a;899.99;used;link3a
keyword2;title4a;1895.0;new;link4a
我正在尝试获取CustomLabel
值并在第二个文件的Keyword
列中进行搜索。目标是将每个关键字值的Item_Price
值收集到一个数组中。
到目前为止,我已经尝试过此方法,但是由于它将每个关键字的所有Item_Price
都收集到一个数组中,因此无法正常工作。
这是有问题的代码:
import csv
prices=[]
with open("1.csv",'r') as file:
file_reader=csv.DictReader(file,delimiter=';')
for row in file_reader:
item=row['CustomLabel']
with open("1.csv",'r',encoding='utf-8') as file1:
file_reader1=csv.DictReader(file1,delimiter=';')
for row1 in file_reader1:
if item in row1['Keyword']:
print(row1['Keyword']+" , "+row1['Item_Price'])
price=row1['Item_Price']
prices.append(price)
print(prices)
您可以自己弄清楚,我得到了一个包含所有关键字所有价格的数组:
['59.0', '130.0', '165.0', '600.0', '800.0', '899.99', '1895.0']
我的问题:如何获取文件中每个关键字的数组? 我的方法完全有效吗?还是我需要做些不同的事情? 任何关于如何实现的建议都值得欢迎。我使用的是python 3.6.5,如有必要,可以安装任何软件包。
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以执行以下操作:首先创建一个字典,将每个CustomLabel
映射到第二个文件中的Item_Price
列表,然后使用该字典从Keyword
列中提取它们在第二个文件中
import csv
prices = {}
with open("1.csv", 'r') as file:
for row in csv.DictReader(file, delimiter=';'):
custom_label = row['CustomLabel']
if custom_label not in prices:
prices[custom_label] = []
with open("2.csv", 'r', encoding='utf-8') as file:
for row in csv.DictReader(file, delimiter=';'):
keyword = row['Keyword']
if keyword in prices:
prices[keyword].append(row['Item_Price'])
from pprint import pprint
pprint(prices)
输出:
{'keyword1': ['59.0', '130.0', '165.0'],
'keyword2': ['600.0', '800.0', '899.99', '1895.0'],
'keyword3': []}