如何在 python 中合并 .dat 文件中的列表
How to merge lists in a .dat file in python
我有很多包含数千行数据的列表。我想像这样 1::2::F::4::990
将这些列表并排合并到一个 .dat 文件中。将这些单个数据视为不同的列表我想完全按照这个合并数据。你能帮忙吗
到目前为止我已经这样做了。
with open("mergefile.dat", "w") as outfile:
outfile.write("\n".join(users_id)+'::'+'\n'.join(movie_id)+'::'+'\n'.join(ratings)+'::'+'\n'.join(timestamps)+'::'+'\n'.join(genders)+'::'+'\n'.join(age)+'::'+'\n'.join(occupation)+'::'+'\n'.join(zipp)+'::'+'\n'.join(moviename)+'::'+'\n'.join(yearOfMovie))
这是示例输出
我想像这样合并数据,我有 user_id、movie_id、评分等列表,每一列都是一个列表
这是我的列表的样子
这些是我的示例列表
user_id=['1','2', '3','4', '5','6','7']
movie_id=['1246','1247', '2081', '1240', '714']
ratings=['5','6','2','7']
timestamp=['9999','0000','5555','2222','1111']
gender=['F','G','F','F','G']
age=['1','1','2']
occupation=['10','10','10','10','10','10']
zip=['67890','45600']
title=['titl1','title2']
genres=['genre1','genre2','genre3']
year=['1999','1990']
我已经试过了,但没有得到我想要的
for user,movie,rating,timestamp,gender,age,occupations,zipps,title,genre,year in zip(users_id,movies_id,ratings,timestamps,genders,age,occupation,zipp,moviename,genres,yearOfMovie):
with open("mergefile1.dat", "w") as outfile:
outfile.write(user+'::'+movie+'::'+rating+'::'+timestamp+'::'+gender+'::'+age+'::'+occupations+'::'+zipps+'::'+title+'::'+genre+'::'+year)
这是我只输出一行
1::1246::4::978302091::F::1::1::48067::Toy Story::Animation|Children's|Comedy::1995
在您发布的示例中存在各种问题,列表和变量的名称,缺少换行符 (\n),也不需要每次都打开文件。请注意,当列表长度不同时,zip 迭代器只会迭代最少数量的元素。
使用您的示例但解决了上述问题,这有效:
user_ids=['1','2', '3','4', '5','6','7']
movie_ids=['1246','1247', '2081', '1240', '714']
ratings=['5','6','2','7']
timestamps=['9999','0000','5555','2222','1111']
genders=['F','G','F','F','G']
ages=['1','1','2']
occupations=['10','10','10','10','10','10']
zipps=['67890','45600']
titles=['titl1','title2']
genres=['genre1','genre2','genre3']
yearOfMovie=['1999','1990']
with open("mergefile1.dat", "w") as outfile:
for user,movie,rating,timestamp,gender,age,occupation,zipp,title,genre,yearof in zip(user_ids,movie_ids,ratings,timestamps,genders,ages,occupations,zipps,titles,genres,yearOfMovie):
outfile.write(user+'::'+movie+'::'+rating+'::'+timestamp+'::'+gender+'::'+age+'::'+occupation+'::'+zipp+'::'+title+'::'+genre+'::'+yearof+'\n')
输出:
1::1246::5::9999::F::1::10::67890::titl1::genre1::1999
2::1247::6::0000::G::1::10::45600::title2::genre2::1990
我有很多包含数千行数据的列表。我想像这样 1::2::F::4::990
将这些列表并排合并到一个 .dat 文件中。将这些单个数据视为不同的列表我想完全按照这个合并数据。你能帮忙吗
到目前为止我已经这样做了。
with open("mergefile.dat", "w") as outfile:
outfile.write("\n".join(users_id)+'::'+'\n'.join(movie_id)+'::'+'\n'.join(ratings)+'::'+'\n'.join(timestamps)+'::'+'\n'.join(genders)+'::'+'\n'.join(age)+'::'+'\n'.join(occupation)+'::'+'\n'.join(zipp)+'::'+'\n'.join(moviename)+'::'+'\n'.join(yearOfMovie))
这是示例输出
我想像这样合并数据,我有 user_id、movie_id、评分等列表,每一列都是一个列表
这是我的列表的样子
这些是我的示例列表
user_id=['1','2', '3','4', '5','6','7']
movie_id=['1246','1247', '2081', '1240', '714']
ratings=['5','6','2','7']
timestamp=['9999','0000','5555','2222','1111']
gender=['F','G','F','F','G']
age=['1','1','2']
occupation=['10','10','10','10','10','10']
zip=['67890','45600']
title=['titl1','title2']
genres=['genre1','genre2','genre3']
year=['1999','1990']
我已经试过了,但没有得到我想要的
for user,movie,rating,timestamp,gender,age,occupations,zipps,title,genre,year in zip(users_id,movies_id,ratings,timestamps,genders,age,occupation,zipp,moviename,genres,yearOfMovie):
with open("mergefile1.dat", "w") as outfile:
outfile.write(user+'::'+movie+'::'+rating+'::'+timestamp+'::'+gender+'::'+age+'::'+occupations+'::'+zipps+'::'+title+'::'+genre+'::'+year)
这是我只输出一行
1::1246::4::978302091::F::1::1::48067::Toy Story::Animation|Children's|Comedy::1995
在您发布的示例中存在各种问题,列表和变量的名称,缺少换行符 (\n),也不需要每次都打开文件。请注意,当列表长度不同时,zip 迭代器只会迭代最少数量的元素。 使用您的示例但解决了上述问题,这有效:
user_ids=['1','2', '3','4', '5','6','7']
movie_ids=['1246','1247', '2081', '1240', '714']
ratings=['5','6','2','7']
timestamps=['9999','0000','5555','2222','1111']
genders=['F','G','F','F','G']
ages=['1','1','2']
occupations=['10','10','10','10','10','10']
zipps=['67890','45600']
titles=['titl1','title2']
genres=['genre1','genre2','genre3']
yearOfMovie=['1999','1990']
with open("mergefile1.dat", "w") as outfile:
for user,movie,rating,timestamp,gender,age,occupation,zipp,title,genre,yearof in zip(user_ids,movie_ids,ratings,timestamps,genders,ages,occupations,zipps,titles,genres,yearOfMovie):
outfile.write(user+'::'+movie+'::'+rating+'::'+timestamp+'::'+gender+'::'+age+'::'+occupation+'::'+zipp+'::'+title+'::'+genre+'::'+yearof+'\n')
输出:
1::1246::5::9999::F::1::10::67890::titl1::genre1::1999
2::1247::6::0000::G::1::10::45600::title2::genre2::1990