import csv
file = open('data.csv', 'r')
reader = csv.reader(file)
items = [] # put the rows in csv to a list
aisle_dept_id = [] # to have a tuple of aisle and dept ids
mydict = {} # porudtc id as keys and list of above tuple as values in a dictionary
product_id, aisle_id, department_id, product_name = [], [], [], []
for row in reader:
items.append(row)
for i in range(1, len(items)):
product_id.append(items[i][0])
aisle_id.append(items[i][1])
department_id.append(items[i][2])
product_name.append(items[i][3])
for item1, item2 in zip(aisle_id, department_id):
aisle_dept_id.append((item1, item2))
for item1, item2 in zip(product_id, aisle_dept_id):
mydict.update({item1: [item2]})
from csv import reader as csv_reader
def csv_to_json(csv_path: str, headers: bool) -> list:
'''Convert data from a csv to json'''
# store json data
json_data = []
try:
with open(csv_path, 'r') as file:
reader = csv_reader(file)
# set column names using first row
if headers:
columns = next(reader)
# convert csv to json
for row in reader:
row_data = {}
for i in range(len(row)):
# set key names
if headers:
row_key = columns[i].lower()
else:
row_key = i
# set key/value
row_data[row_key] = row[i]
# add data to json store
json_data.append(row_data)
# error handling
except Exception as e:
print(repr(e))
return json_data
import csv
def read_csv(filepath: str):
data = []
with open(filepath, 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
data.append(row)
return data
data = read_csv('data.csv')
print(data)
import codecs
import csv
def read_csv(filepath):
with open(filepath, 'rb') as f:
reader = csv.DictReader(codecs.iterdecode(f, 'utf-8'))
data = list(reader)
return data
data = read_csv('data.csv')
print(data)
import codecs
import csv
def read_csv(filepath):
data = {}
with open(filepath, 'rb') as f:
reader = csv.DictReader(codecs.iterdecode(f, 'utf-8'))
for row in reader:
key = row['Id'] # Assuming a column named 'Id' to be the primary key
data[key] = row
return data
data = read_csv('data.csv')
print(data)
5条答案
按热度按时间w41d8nur1#
你很可能需要一个库来读取CSV文件。虽然你可以自己打开和解析数据,但这将是繁琐和耗时的。幸运的是,python附带了一个标准的
csv
模块,你不必pip安装!你可以像这样读取你的文件:这将向您显示每个
row
都是作为列表读入的。然后您可以基于索引来处理它!还有其他方法可以读入数据,如https://docs.python.org/3/library/csv.html所述,其中一种方法将创建字典而不是列表!更新
你链接了你的github为项目我采取了剪
将其保存为
file.csv
,并使用上面的代码运行。结果:这就是你在你的问题中所问的。我不打算为你做你的项目,你应该能够从这里工作。
kgqe7b3p2#
最近我得到了一个非常相似的问题,比这个问题更复杂,关于在不使用pandas的情况下制作数据结构。这是我迄今为止发现的唯一相关问题。如果我接受这个问题,那么我被问到的是:把产品id作为键放到字典中,然后把通道和部门id的元组列表作为值(在python中)。字典是必需的 Dataframe 。当然,我不能在15分钟内完成(而不是在2小时内)。我很难想到numpy和pandas之外的东西。
我有以下解决方案,这也回答了这个问题在开始。可能不理想,但得到了我所需要的。
希望这也有帮助。
有了输出,
zsohkypk3#
当一个人的生产环境受到内存限制时,能够读取和管理数据而不导入其他库可能会有所帮助。
为了实现这一点,内置的
csv
模块完成了这项工作。至少有两种方法可以做到这一点:使用
csv.Reader()
或使用csv.DictReader()
。csv.Reader()
允许您使用索引访问CSV数据,非常适合简单的CSV文件(Source)。另一方面,
csv.DictReader()
更友好且易于使用,特别是在处理大型CSV文件(Source)时。以下是如何使用
csv.Reader()
执行此操作以下是如何使用
csv.DictReader()
执行此操作例如,check Real Python's page here。
1l5u6lss4#
有类似的需求,想出了这个解决方案;一个将csv转换为json的函数(需要json以提高可读性,并使查询数据更容易,而无需访问Pandas)。如果函数的
headers
argumement是True
,则csv的第一行用作json中的键,否则使用值索引作为键。给定一个包含以下内容的csv
带有标题的输出为
不带标题的输出为
flvlnr445#
以下解决方案的灵感来自this answer。下面示例中的输出内容是使用以下输入数据生成的:
data.csv
如果你想在下面的例子中漂亮地打印输出,你可以使用以下方法:
方案一-使用
csv.reader()
获取list
对象列表输出
要逐行打印数据,您也可以使用以下命令:
输出:
方案2 -使用
csv.DictReader()
获取dict
对象列表输出
方案3 -使用
csv.DictReader()
根据主键获取dict
对象的字典输出
漂亮的打印输出(使用本答案顶部提到的代码):