Как исправить выпадения повторных слов в конечном результате

Количество игроков - это количество прогонов программы. Почему-то в конечном файле rez выпадают повторные слова, хотя не должны.
Почему так происходит и как это исправить?
В файле proff хранятся слова (сепаратор - \n)

import random

n = int(input('Количество игроков: '))
i=0
while n > i:
    i = i+1
    with open('Proff.txt', 'r', encoding="utf-8") as source:
        l = source.readlines()
        word2 = ''
        word2 = l[random.randint(1, len(l) - 1)]

    with open('vibor.txt', 'r', encoding="utf-8") as f:
        data = [ line.split() for line in f ]

    while word2 in data:
        word2 = l[random.randint(1, len(l) - 1)]
    
    f2 = open("vibor.txt", 'a', encoding="utf-8")
    f2.write(word2)
    f2.close()

    my_file = open("rez.txt", 'a', encoding="utf-8")
    my_file.write(word2)
    my_file.close()
    


Ответы (2 шт):

Автор решения: icYFTL

Очевидно там хранятся одинаковые слова, т.к. файл rez.txt открыт в режиме a (append). Сделайте режим w(write).

Ну либо если в rez.txt должны хранится все слова со всех игр (или как это правильнее сказать), то w+ (write + read) и костыль этакий:

my_file = open("rez.txt", 'w+', encoding="utf-8")
my_file.write('\n'.join(list(set(my_file.read().split('\n')))))
my_file.close()
→ Ссылка
Автор решения: CrazyElf

Проверьте, что у вас в data получается. Сдаётся мне, что у вас там получается список списков, а не просто список слов. То есть что-то типа [['слово1'],['слово2'],...], а не ['слово1','слово2',...]

Читайте лучше файл vibor.txt вот так, аналогично другому файлу, который вы читаете ранее, и тогда сравнение должно нормально заработать:

with open('vibor.txt', 'r', encoding="utf-8") as f:
    data = f.readlines()
→ Ссылка