Python 在文件中逐行追加向量
我正在逐行读取一个文件(m.csv),以便为每种电影类型创建一个单位向量。在转到下一行之前,我想在文件本身的每一行末尾追加结果向量。例如: 如果一行包含此电影信息:Python 在文件中逐行追加向量,python,Python,我正在逐行读取一个文件(m.csv),以便为每种电影类型创建一个单位向量。在转到下一行之前,我想在文件本身的每一行末尾追加结果向量。例如: 如果一行包含此电影信息: 1,Four Rooms (1995),Comedy 附加向量将是: 18,Four Rooms (1995),Comedy, [0,1,0,0,0,0] 我只是对如何将向量追加回有一个问题,如下所示: genres = ['unknown', 'Comedy', 'Crime', 'Documentary', 'Drama',
1,Four Rooms (1995),Comedy
附加向量将是:
18,Four Rooms (1995),Comedy, [0,1,0,0,0,0]
我只是对如何将向量
追加回有一个问题,如下所示:
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!!
genres=[‘未知’、‘喜剧’、‘犯罪’、‘纪录片’、‘戏剧’、‘幻想’]
movieDict={}
将open(路径+'m.csv')作为f:
温度=“”
对于f中的行:
reader=csv.reader(f,分隔符=',')
对于读取器中的行:
l=行[-1]。拆分(“|”)
向量=[0]*6
对于范围内的i(len(l)):
#打印(“%s位于索引=%s!\n”%(l[i],类型索引(l[i]))
如果l[i]在体裁中:
向量[类型索引(l[i])]=1
其他:
向量[类型索引(l[i])]=0
reader[row]=vector#如前所述,试图同时从文件读取和从文件写入将不起作用
您可以将所有数据读入内存(对于一个大文件来说,这可能是不可能的),然后截断原始文件并写入新内容,例如,看看这个,谁的第一个答案会这样做
with open(path, 'r+') as f:
lines = f.readlines()
f.seek(0)
f.truncate()
另一种方法是打开一个新文件进行写入,从一个文件中读取一行,然后写入另一个文件。您可以删除原始文件,然后重命名第二个文件。@Jean Françoisfare非常感谢。我收到此错误AttributeError:“\u csv.reader”对象没有属性“append”
。这是因为我使用的是python 2.7吗?对不起!我的意思是row.append(vector)
您不能更改正在读取的文件。必须将修改后的行写入新文件。此外,由于最后一个字段包含逗号,因此必须用引号括起来:1,Four Rooms(1995),Comicle,“[0,1,0,0,0,0]”
此外,f:
中的行也没有用(即使无害……),因为读者将使用所有输入文件