我有什么:
我用一行文字填充的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
答案 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再次读取它并处理它。
我希望这会有所帮助。