创建以下任务的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()时,我总是出错,而其他格式解决方案似乎不适用于字典输出。我仍然需要能够输出为两个字典。
2条答案
按热度按时间vsmadaxz1#
我猜你的
input1.csv
看起来像这样:在不直接给出赋值的答案的情况下,考虑
range(0, len(some_list), 2)
将产生该列表中所有其他项的索引。例如:输出:
试着找出你可以在哪里使用这个想法。
bjp0bcyl2#
一些提示,因为这看起来像家庭作业:
csv.reader
有格式化参数来处理分隔符后的空格。1.每一行都有交替的键/值对。切片可以帮助。特别是 step 选项,例如
row[::2]
,以获得每隔一个项目。dict
可以创建键值对。zip
可以获取键列表和值列表并将它们配对。