如何在Python中从用户输入的CSV文件创建两个格式化的字典?

cfh9epnr  于 2023-05-20  发布在  Python
关注(0)|答案(2)|浏览(170)

创建以下任务的Python解决方案。确保解决方案生成的输出格式与下面示例中显示的格式完全相同,包括大写和空格。
任务:创建一个解决方案,该解决方案接受标识CSV文件名称的输入,例如“input1.csv”。每个文件包含两行逗号分隔的值。导入内置模块csv,并使用其open()函数和reader()方法为指定文件中的每行逗号分隔值创建一个key:value对字典。将文件内容输出为两个字典。
解决方案输出的格式应为

{'key': 'value', 'key': 'value', 'key': 'value'}
{'key': 'value', 'key': 'value', 'key': 'value'}

下面使用的输入文件是:

a, 100, b, 200, c, 300
bananas, 1.85, steak, 19.99, cookies, 4.52

现在,我已经在网上找到了部分问题的解决方案,但没有解决这个项目所要求的每个问题。我试过ChatGPT,它不能解决这个问题,我已经试着修改代码两天了,我似乎不能解决这个问题。
问题是,结果需要完全像这样输出(包括所有标点符号和空格):

{'a': '100', 'b': '200', 'c': '300'}
{'bananas': '1.85', 'steak': '19.99', 'cookies': '4.52'}

所以,以下是ChatGPT的尝试(已删除注解):

import csv
csv_file_name = input()
dict1 = {}
dict2 = {}
with open(csv_file_name, 'r') as file:
    csv_reader = csv.reader(file)   
    for row in csv_reader:
        dict1[row[0]] = row[1]
        dict2[row[2]] = row[3]
print(dict1)
print(dict2)

但这会导致输出:

{' a': ' 100', 'bananas': ' 1.85'}
{' b': ' 200', ' steak': ' 19.99'}

于是,我试着:

import csv
filename = input()
with open(filename, 'r') as data:
    for line in csv.DictReader(data):
        print(line)

但我运行了一下得到了:

{' a': 'bananas', ' 100': ' 1.85', ' b': ' steak', ' 200': ' 19.99', ' c': ' cookies', ' 300': ' 4.52'}

于是,我试着:

import csv
filename = input()
with open(filename, 'r') as read_obj:
    csv_reader = csv.reader(read_obj)
    list_of_csv = list(csv_reader)
    print(list_of_csv)

我得到了:

[[' a', ' 100', ' b', ' 200', ' c', ' 300'], ['bananas', ' 1.85', ' steak', ' 19.99', ' cookies', ' 4.52']]

这几乎是正确的,但我需要在元组后换行,删除括号和空格,并添加冒号。当我尝试在代码中的任何地方放置split()时,我总是出错,而其他格式解决方案似乎不适用于字典输出。我仍然需要能够输出为两个字典。

vsmadaxz

vsmadaxz1#

我猜你的input1.csv看起来像这样:

a, 100, b, 200, c, 300
bananas, 1.85, steak, 19.99, cookies, 4.52

在不直接给出赋值的答案的情况下,考虑range(0, len(some_list), 2)将产生该列表中所有其他项的索引。例如:

some_list = [1, 2, 3, 4]
for index in range(0, len(some_list), 2):
    print(some_list[index])

输出:

1
3

试着找出你可以在哪里使用这个想法。

bjp0bcyl

bjp0bcyl2#

一些提示,因为这看起来像家庭作业:

  1. csv.reader有格式化参数来处理分隔符后的空格。
    1.每一行都有交替的键/值对。切片可以帮助。特别是 step 选项,例如row[::2],以获得每隔一个项目。
  2. dict可以创建键值对。
  3. zip可以获取键列表和值列表并将它们配对。

相关问题