сравнивая два текстовых файла и удаляя дубликаты в python - PullRequest
1 голос
/ 24 сентября 2011

У меня есть два текстовых файла: file1 и file2.

File1 содержит несколько случайных слов, а file2 содержит слова, которые я хочу удалить из file1, когда онипроисходят.Есть ли способ сделать это?

Я знаю, что мне, вероятно, следует включить мою собственную попытку сценария, чтобы хотя бы продемонстрировать усилия, но, честно говоря, это смешно и не поможет.

Если бы кто-то мог хотя бы дать подсказку о том, с чего начать, это было бы очень полезно.

Ответы [ 2 ]

7 голосов
/ 24 сентября 2011

Если вы читаете слова в set (по одному для каждого файла), вы можете использовать set.difference(). Это работает, если вам не важен порядок вывода.

Если вы заботитесь о порядке, прочитайте первый файл в список, второй в набор и удалите все элементы в списке, которые есть в наборе.

a = ["a", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
b = {"quick", "brown"}
c = [x for x in a if not x in b]
print c

дает: ['a', 'fox', 'jumped', 'over', 'the', 'lazy', 'dog']

6 голосов
/ 24 сентября 2011

получить слова из каждого:

f1 = open("/path/to/file1", "r") 
f2 = open("/path/to/file2", "r") 

file1_raw = f1.read()
file2_raw = f1.read()

file1_words = file1_raw.split()
file2_words = file2_raw.split()

, если вы хотите уникальные слова из файла1, которых нет в файле2:

result = set(file1_words).difference(set(file2_words))

, если вы хотите удалить слова изтекст файла1

for w in file2_words:
    file1_raw = file1_raw.replace(w, "")
...