我可以迭代CSV行来创建与空列表配对的密钥吗?

时间:2017-01-09 12:40:22

标签: list python-3.x loops csv dictionary

我有什么:

我用一行文字填充的CSV,每个单元格一个字。

微观级别:尝试:

我正在尝试创建一个字典,其中每一行都是一个Key,每个Key都被分配一个空列表作为变量(见下文)。

我可以通过将列表转换为元组来一次执行此行 - > 创建一个空列表 - > 将元组作为键添加到我的字典中,并将空列表指定为变量

但是,我想以自动方式这样做,因为单独这样做是乏味的。

宏观级别:尝试: 我想为CSV中的每一行分配关键字(标签)列表,以便稍后根据其标签调用文本。

我的问题: 有没有办法以我描述的方式做到这一点?

我是不是错了,应该以不同的方式做这件事?

*编辑:我在想,如果我翻动它,我可以解决我的整体问题。

例如,将x个标签作为我的标签字典的键值,并进行一次运行,为每个键分配一个空的字典值。然后使用我的CSV中的文本填充词典。

这不会删除逐个方法;但是,会减少输入键/值对所需的次数,因为我更有可能拥有比标签更多的文本。

见下面的代码

!#Python3

import csv
import os
import string

#open CSV and assign var to the list content
outputFile = open("output.csv", encoding="utf-8")
outputReader = csv.reader(outputFile)
data = list(outputReader)

#Get rid of empty cells
for list in data:
    for object in list:
        while "" in list:
            list.remove("")

#open a dictionary
tags = {}

#Turn first row of CSV into a tuple
article1 = tuple(data[1])

#generate empty list
article1_tags = []

#Assign empty list as a variable to the article1 Key and put in tags     dictionary
While True:
    if article1 in tags :
           break
    else:
           tags[article1] = article1_tags

1 个答案:

答案 0 :(得分:0)

现在我对你想要实现的目标有了更多的了解,我建议使用一个字典列表。每个字典包含有关每篇文章的数据(或来自csv文件的行)。这里的关键是csv文件仍然是纯文本文件,csv没有什么特别之处。事实上,我会完全避免使用excel并使用文本编辑器进行编辑。

我首先打开文件并从文件中读取每一行(行)到字典的键/值对。 关于python 3的一个很酷的事情就是你可以在没有额外模块的情况下轻松完成。

csvfile = open('output.csv', encoding='utf-8')
articlelist = []
for line in csvfile:
    articlelist.append(dict(textkey=line,tagskey=[]))

使用迭代器' line'在此上下文中,文本文件流对象将自动逐行进行,并将该行的所有文本作为单个字符串。所以line是一个字符串对象。

一旦你有了这样的字典列表,你可以简单地遍历文章列表打印或添加标签或做任何你想做的事情,甚至为每个字典添加更多的键/值对。这样做意味着并非所有字典都需要遵循相同的格式(尽管这是可取的)。

我添加了tagskey键,值为空列表,您可以在以后添加。

不要使用无限循环或while循环来浏览列表等。始终使用

for iterator in theList:

方法

我还会考虑在这里使用JSON格式进行小练习。我认为它会使你想要实现的目标更加美好。使用Python JSON非常容易阅读,然后使用纯文本再次输出。然后,您可以输出到JSON文本文件,手动编辑它,然后python再次读取它并处理它。

我希望这会有所帮助。