我从imdb下载了一个包含电影类型的大文件。该文件非常大,如果我尝试从文件中打印出所有内容,我的超级计算机就会崩溃。
好吧,我需要在某些电影上播放一些类型。为了完成这一点,我在python中创建了一个名为movie的列表。
此列表包含相同字符串中包含年份的电影名称。你可以在这里看到一个例子。
['The Shawshank Redemption (1994)\n',
'The Godfather (1972)\n',
'The Godfather: Part II (1974)\n',
'The Dark Knight (2008)\n',
'Pulp Fiction (1994)\n',
我必须为大文件中的每一行制作一些for循环,它应检查其中一个movienames是否出现在我的电影列表中,如果是,它应该附加一个名为genrelist的新列表。 / p>
所以结果将是一个包含电影名称的新列表,包括他们的流派;)
我到目前为止尝试过:
filegenre = open("GenreMod.list", "r")
lines = filegenre.readlines()
for line in lines:
for item in names:
if item in line:
genrelist.append(line)
print genrelist
但是在这里它只会在列表名称中找到姓氏。所以,如果它用我粘贴的例子进行搜索,我将只找到包含 - >的所有内容。 '低俗小说(1994),但不是其余的?
我做了一些错误代码或`?
答案 0 :(得分:0)
您需要保持写文件处于打开状态。您的文件只写了最后一个循环实例。
with open("genrelist.ext", "w"):
#do stuff
没关系,你正在创建一个列表而不是一个文件。这里的Python技能很差
答案 1 :(得分:0)
您可以使用列表理解。
item = "Pulp Fiction"
with open("GenreMod.list", "r") as filegenre:
print [line.strip() for line in filegenre if item in line]
如果文件在文本模式下打开(现在是什么),那么迭代文件描述符将逐行返回。
列表理解将遍历这些行,仅考虑那些拥有item in line
的人,并将结果列表中的项目值分配给带有删除空格的原始行(有效删除" \ n" )。