比较python 2.7中的字符串

时间:2016-02-12 11:50:42

标签: string python-2.7

这是我的代码:

for films in filmlist:
    with codecs.open('peliculas.txt', encoding='utf8', mode='r') as lfile:
        filmsDone = lfile.read()
        filmsDoneList = filmsDone.split(',')

    if films not in filmsDoneList:
        with codecs.open('peliculas.txt', encoding='utf8', mode='a+') as lfile:
            lfile.write(films.strip() + ',')

它永远不会识别列表的最后一项。 我已经打印了filmsDoneList,PyCharm中的最后一项看起来像这样:u'X Men.Primera Generacion'。我有印刷电影,它们看起来像这样:X Men.Primera Generacion'

所以我不知道问题出在哪里。提前谢谢。

1 个答案:

答案 0 :(得分:0)

@Rafa,为了让您更好地理解我在评论中的意思,我必须写一个完整的答案,以便我附上代码和截图。
我们假设peliculas.txt文件格式如下:
enter image description here

您可以根据以下3个命令在python中导入此类文件:

fileIN=open('peliculas.txt','r')
filmsDoneList=fileIN.readlines()
fileIN.close()

因此,您基本上打开文件,感谢readlines()导入每一行,然后关闭该文件,因为其内容在filmsDoneList中可用。后者具有以下内容(在PyCharm中):

enter image description here

显然这个列表很长,不适合我的屏幕,但你明白了 您现在可以通过以下循环删除那个烦人的换行标记'\r\n'

for id in range(len(filmsDoneList)):
    filmsDoneList[id]=filmsDoneList[id].strip()

现在filmsDoneList的格式为: enter image description here 现在好多了,不是吗?

现在,我们假设您要添加以下电影:

newFilms=['The Exorcist','Back to the Future','Aliens','Back to the Future']

为了使您的代码更加健壮,我已经两次添加了Back to the Future。基本上你可以通过newFilms函数去除set()中的重复项。这会在newFilms中转换set并删除重复项,但我们会将其转换回列表,这要归功于此命令:

newFilms=list(set(newFilms))

现在newFilms的格式为:

enter image description here

现在已经对所有内容进行了排序,现在是时候检查newFilms中的项目是否已经在filmsDoneList中,回想起来是peliculas.txt的内容。

重新打开peliculas.txt,如下所示:

fileOUT=open('peliculas.txt','a')

'a'标记表示"追加",所以基本上你写的所有内容都会被添加到文件中,而不会删除任何内容。
主循环:

for film in newFilms:
    if film in filmsDoneList:
        pass
    else:
        fileOUT.write(film+'\n')

pass表示"什么都不做"。 write命令还将新行标记附加到电影标题:这将保持每行1个标题的先前格式。在此循环结束时,您也可以关闭fileOUT 结果peliculas.txt
enter image description here

并且,如您所见,“回到未来”位于newFilms但未附加到此文件的末尾,因为已经在其中。相反,驱魔人和外星人已被附加到此文件的底部。

如果您的文件标题以逗号分隔,则此方法仍然有效。但是你必须添加

filmsDoneList=filmsDoneList[0].split(',')
在第一个for循环之后

。同样在write函数中(在最后一个for循环中),您可能希望用逗号替换换行值。

这种方法更简洁,我认为还可以解决您已经遇到的问题并避免循环中连续打开/关闭文件。希望这有帮助!