Python csv文件到字典

Python csv文件到字典,python,csv,dictionary,Python,Csv,Dictionary,我想从csv文件写入字典 但是: 一行中的第一个单词应该是关键字 行中的所有其他单词都应该是该键的独立值 到目前为止,我的代码是: 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('lu

我想从csv文件写入字典

但是:

  • 一行中的第一个单词应该是关键字
  • 行中的所有其他单词都应该是该键的独立值
  • 到目前为止,我的代码是:

    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,“巴米扬”,“巴米扬”,“阿富汗”,“阿富汗”,34.800000,67.816667701,“阿富汗”\N\N,1149361
    英国夏令时,“波斯特”,“波斯特”,“阿富汗”,“阿富汗”,31.550000,64.366667701,“阿富汗”,11347201149361
    CCN,“查克查兰”,“查克查兰”,“阿富汗”,“阿富汗”,34.533333,65.266667701,“阿富汗”,\N\N,1149361
    
    全部来自名为Luchhavens2.csv的excel文件,文本位置为A1-A2-A3-etc

    你可以在这里找到它:

    输出:

    {
    '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文件。奇怪的是,这样做很有效,我可以毫无问题地阅读它。

    如果您运行以下命令

    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:]
    

    你有什么样的数据可以给我们看吗?像
    text
    通常是什么样子的?像这样的东西(只有一行):BIN,“Bamiyan”,“Bamiyan”,“Afghanistan”,“AF”,34.800000,67.816667701,“Afghanistan”,\N\N,1149361@Roelland如果行为:宾、“巴米扬”、“巴米扬”、“阿富汗”、“阿富汗”,34.800000,67.8166‌​67701,“阿富汗”‌​,\N、 \N,114936,输出是什么?将其上载到诸如expirebox之类的托管文件,然后在此处发布链接。如果您的数据不正确,则会出现不平衡的引用。修好它,你就应该很好/实际上我仍然有同样的问题!但可能与输入文件有关(请参阅帖子上的回复)。无论如何,谢谢你的努力!