我正在逐行读取文件(m.csv),以便为每个电影类型创建一个单位向量。我想在结束下一行之前将结果向量附加到文件本身每行的末尾。例如:
如果某行有此电影信息:
1,Four Rooms (1995),Comedy
附加的矢量将是:
18,Four Rooms (1995),Comedy, [0,1,0,0,0,0]
我对如何将vector
追加到以下内容时遇到问题:
genres = ['unknown', 'Comedy', 'Crime', 'Documentary', 'Drama', 'Fantasy']
movieDict = {}
with open(path + 'm.csv') as f:
temp = ''
for line in f:
reader = csv.reader(f, delimiter=',')
for row in reader:
l = row[-1].split('|')
vector = [0] * 6
for i in range(len(l)):
# print ("%s is at index=%s! \n" % (l[i], genres.index(l[i])))
if l[i] in genres:
vector[genres.index(l[i])] = 1
else:
vector[genres.index(l[i])] = 0
reader[row] = vector # <<<<<< I am stuck here!!
感谢任何帮助。
答案 0 :(得分:0)
据评论,尝试从文件中读取并同时从文件中写入不会起作用。
您可以将所有数据读入内存(对于大文件可能无法读取),然后截断原始文件并编写新内容,例如,请参阅第一个答案执行此操作的question
with open(path, 'r+') as f:
lines = f.readlines()
f.seek(0)
f.truncate()
替代方法是打开一个新文件进行写入,然后从一个文件中读取一行,然后写入另一个文件。您可以删除原始文件,然后重命名第二个文件。