csv文件到字典

2024-10-01 04:54:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从csv文件写入字典。你知道吗

但是:

  1. 一行中的第一个单词应该是关键字
  2. 行中的所有其他单词都应该是该键的独立值。你知道吗

到目前为止我的代码是:

def coordinates(text):
    import csv
    reader = csv.reader(open(text))
    d = {}

    for row in reader:
        key = row[0]
        d[key] = row[1:]
    print(d)

coordinates('luchthavens2.csv')

使用此代码,行中的所有项都是我字典中的键。你知道吗

谁能帮忙?你知道吗

编辑:

输入文件如下所示:

BIN,"Bamiyan","Bamiyan","Afghanistan","AF",34.800000,67.816667,701,"Afghanistan",\N,\N,1149361
BST,"Bost","Bost","Afghanistan","AF",31.550000,64.366667,701,"Afghanistan",\N,1134720,1149361
CCN,"Chakcharan","Chakcharan","Afghanistan","AF",34.533333,65.266667,701,"Afghanistan",\N,\N,1149361

全部来自一个名为luchthavens2.csv的excel文件,文本的位置是A1-A2-A3-etc

你应该在这里找到:https://expirebox.com/download/bb8cb3a39f9be041743a8b86db89093b.html

输出:

{
'CCN,"Chakcharan","Chakcharan","Afghanistan","AF",34.533333,65.266667,701,"Afghanistan",\\N,\\N,1149361': [],
'BST,"Bost","Bost","Afghanistan","AF",31.550000,64.366667,701,"Afghanistan",\\N,1134720,1149361': [],
'BIN,"Bamiyan","Bamiyan","Afghanistan","AF",34.800000,67.816667,701,"Afghanistan",\\N,\\N,1149361': []
}

编辑:

我已将输入文件更改为文本文件,然后再次更改为csv文件。奇怪的是,我可以毫无问题地阅读它。你知道吗


Tags: 文件csvkey代码text字典单词reader
3条回答

如果你运行以下命令

import pprint
import csv


def coordinates(text):
    ret = {}
    with open(text, 'r') as fp:
        reader = csv.reader(fp)
        for row in reader:
            key = row.pop(0)
            ret[key] = row
    return ret


data = coordinates('data.csv')
pprint.pprint(data)

在以下文件中

$ cat data.csv 
AAA,"Blub",25.25
BBB,"Blob",27.27

然后你会得到

$ python stackoverflow.py 
{'AAA': ['Blub', '25.25'], 'BBB': ['Blob', '27.27']}

在输入文件中,引号被弄乱了。你知道吗

"BIN,""Bamiyan"",""Bamiyan"",""Afghanistan"",""AF"",34.800000,67.816667,701,""Afghanistan"",\N,\N,1149361"
"BST,""Bost"",""Bost"",""Afghanistan"",""AF"",31.550000,64.366667,701,""Afghanistan"",\N,1134720,1149361"
"CCN,""Chakcharan"",""Chakcharan"",""Afghanistan"",""AF"",34.533333,65.266667,701,""Afghanistan"",\N,\N,1149361"

应该是

"BIN","Bamiyan","Bamiyan","Afghanistan","AF",34.800000,67.816667,701,"Afghanistan",\N,\N,1149361
"BST","Bost","Bost","Afghanistan","AF",31.550000,64.366667,701,"Afghanistan",\N,1134720,1149361
"CCN","Chakcharan","Chakcharan","Afghanistan","AF",34.533333,65.266667,701,"Afghanistan",\N,\N,1149361

这会给你想要的输出。 您的数据不是正确的CSV格式

import csv
reader = csv.reader(open('luchthavens2.csv'))
d = {}

for row in reader:
    row = row[0].split(',')
    key = row[0]
    d[key] = row[1:]

相反,你不需要一个CSV模块,因为你的数据不是正确的CSV

下面的代码将解决您的问题没有CSV模块

d = dict()
with open('luchthavens2.csv') as fh:
    for row in fh:
        row = row.split(',')
        key = row[0]
        d[key] = row[1:]

相关问题 更多 >