Нужно убрать из текста в файле повторения слов не используя списки
вышло убрать повторения слов используя функцию .split(), но нужно так чтоб она не задействовалась. текст может быть любым
b=''
with open('file32.txt', 'r') as f:
text = f.read()
text = text.split( )
for i in text:
if i not in b and i != ' ':
b= b+i+' '
elif i == ' ':
b=b+i
print(b)
with open("result6.txt", 'w') as f:
f.write(b)
Ответы (1 шт):
На мой взгляд, ваш способ в текущем виде не будет корректно работать, так как не учитывает, что внутри строки b может встретиться слово, являющееся частью другого слова.
Допустим, что в тексте встречаются слова "какой" и "как". Если в b уже добавлено слово "какой", то при проверке слова "как", условие if i not in b and i != ' ' будет ложным, так как будет найдено вхождение подстроки "как" в строке b в слове "какой".
Если важно сохранить исходный порядок слов, то проще сохранять все слова отдельно в список, а потом их объединить для вывода в результирующий файл. Было бы удобно воспользоваться множеством, но через него мы не сохраним порядок элементов.
Из вопроса не ясно может ли текст состоять из нескольких строк или только из одной. Покажу на примере, когда текст состоит из одной строки и не нужно запоминать где находятся символы переноса строк. Если что, для нескольких строк уже по аналогии сделаете)
Пример реализации без использования функции split()
with open('file32.txt', 'r') as f:
initial_text = f.read().strip()
# Заполняем список unique_words уникальными словами
unique_words = []
new_word = ''
for ch in initial_text:
if ch == ' ':
if new_word not in unique_words:
unique_words.append(new_word)
new_word = ''
else:
new_word += ch
# Добавляем последнее слово, так как оно не оканчивается на пробел
if new_word not in unique_words:
unique_words.append(new_word)
with open('result6.txt', 'w') as f:
f.write(' '.join(unique_words))