2017-01-14 10 views
0

Я довольно новичок в Python! Недавно я начал кодировать программу, которую я хочу писать и читать в текстовые файлы и из них, при сжатии/распаковке предложений (вроде).Создание программы, которая будет читать и писать в текстовые файлы

Однако я столкнулся с проблемой пары, которую я не могу исправить, в основном мне удалось закодировать секцию сжатия. Но когда я иду читать содержимое текстового файла, я не уверен, как воссоздать исходное предложение через позиции и уникальные слова ?!

###This section will compress the sentence(s)### 
     txt_file = open("User_sentences.txt","wt") 
     user_sntnce = input(str("\nPlease enter your sentences you would like compressed.")) 
     user_sntnce_list = user_sntnce.split(" ")      
     print(user_sntnce_list) 

     for word in user_sntnce_list: 
      if word not in uq_words: 
       uq_words.append(word) 
     txt_file.write(str(uq_words) + "\n") 

     for i in user_sntnce_list: 
      positions = int(uq_words.index(i) + 1) 
      index.append(positions) 
      print(positions) 
      print(i) 
      txt_file.write(str(positions)) 
    txt_file.close() 
###This section will DECOMPRESS the sentence(s)### 
    if GuideChoice == "2": 
     txt_file = open("User_sentences.txt","r") 
     contents = txt_file.readline() 
     words = eval(contents) 
     print(words) 
     txt_file.close() 

Это мой код до сих пор, кажется, работает, но как я уже сказал, я действительно застрял, и я действительно не знаю, как двигаться дальше и воссоздать оригинальную фразу из текста файл.

+0

Когда вы говорите _ «Я действительно не знаю, как ...» _, это значит, что вы не указали, как сжимать и расширять предложение? Не могли бы вы представить алгоритм обеих функций? –

+0

Не могли бы вы определить, что такое 'uq_words'? –

+0

Извините, что вы не поняли! По сути, uq_words сохранит все уникальные слова из предложения, например «кот сидел на коврике», уникальными словами из этого будет «the, cat, sat on, mat». –

ответ

0

От понимания, что вы хотите заменить каждое слово в текстовом файле словом по вашему выбору (более короткий, если вы хотите «сжать»). Тем временем вы сохраняете «словарь» (не в смысле python) uq_words, где вы связываете каждое слово с index. Итак, предложение «сегодня мне нравится пицца, сегодня похоже на вчера» станет: «12341536». Я попытался удалить код if GuideChoice == "2": и определить uq_words=[] и index=[]. Если это то, что вы собираетесь делать, то:

  • Я полагаю, вы вызываете это сжатие, время от времени, это в функции. Поэтому делать то, что вы делаете во второй строке, - это открыть NEW-файл с тем же именем предыдущих, что означает, что вы всегда будете иметь сжатое последнее предложение, потеряв предыдущее. Постарайтесь читать каждый раз, когда строки, переписывают все и добавляем новое (что-то, что вы делали в contents = txt_file.readline().
  • Вы печатаете сжатый перевод (например, «2345») И массив, компонент которого является словами разбитого Я не думаю, что это «сжатый» документ, к которому вы стремитесь. Только часть «2345», правильно? Поскольку, я считаю, вы хотите сохранить словарь, но этот код находится внутри функции, вы будете Так что напишите 2 документа: один со сжатым текстом (каждый раз обновляется и не переписывается!), а другой файл с 2 столбцами, где вы пишете словарь. Вы передаете имя файла словаря в виде строки к функции, поэтому вы можете обновить ее в случае добавления новых слов, и вы читаете ее как массив NX2 (N число слов).
+0

Спасибо за ответ! - В основном, «сжатие» в этом случае - у меня будет переменная uq_words, которая будет содержать все уникальные слова из предложения, которое вводит пользователь, тогда у меня также есть переменная позиций. Например, предложение «кошка сидела на коврике» имеет уникальные слова «the, cat, sat, on, mat», а позиции будут «123415», поэтому исходное предложение можно воссоздать из переменной позиций и uq_words! –

+0

Основная проблема: когда словарь содержит более 9 элементов, как восстановить индекс, если все цифры вставлены в одно значение? –

+0

Я не совсем уверен, что вы подразумеваете под этим? @ J.Piquard –