Python:如何打开文件并逐字循环并与列表进行比较

时间:2016-02-03 04:59:34

标签: python-3.x

我有一个所有字符串的文件,我想循环遍历该文件并检查其内容与另一个文件。这两个文件都太大而无法放入代码中,因此我必须使用open方法打开每个文件,然后将每个文件转换为一个循环,遍历文件逐字逐句(在每个文件中)并比较其他文件中每个单词的每个单词。任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

如果文件都已排序,或者您可以生成文件的排序版本,那么这相对容易。你最简单的方法(从概念上讲)是从文件A中取出一个单词,称之为a,然后从文件B中读取一个单词,将其称为b。 b是按字母顺序排在a之前,还是在a之后,或者它们是相同的。如果它们相同,请将该单词添加到您正在维护的列表中。如果b在a之前,则从文件B读取b,直到b> = a。如果相等,请收集该单词。如果< b,显然,从a读取a直到a> = b,并且如果相等则收集。 由于文件大小有问题,您可能需要将收集的单词写入结果文件以避免内存不足。我会让你担心这个细节。

如果它们没有排序而您无法对它们进行排序,那么这是一个更难的问题。天真的方法是从A中取出一个单词,然后通过B扫描寻找该单词。既然你说文件很大,这不是一个有吸引力的选择。通过从A和B中读取块并使用集合交叉点,你可能做得比这更好。但这有点复杂。

尽可能简单地把它放在一个合理大小的文件A块中,并将其转换为一组单词,称之为a1。然后,我将读取类似大小的B块作为集合b1,b2,... bn。 (a1,b1),(a1,b2),...,(a1,bn)的交集的并集是出现在a1和B中的单词集。然后重复对于块a2,a3,... an 。

我希望这是有道理的。如果你没有玩套装,它可能没有,但是我想你有一个很酷的东西可以学习。

答案 1 :(得分:0)

我找到了答案。读取文件时有一个指针。问题是当使用嵌套循环时,它不会重定向回Python的外部循环中的下一个语句。