我目前正在用Python创建一个程序,它将用户输入句子压缩成一个独特的单词和位置列表。例如句子"问你的国家可以做什么,因为你问你可以为你的国家做些什么"将被压缩为"不是你的国家可以为你做什么"并且职位将是" 12345678913967845"。
然后可以从这些独特的单词和位置重新创建原始句子。
我的问题是我目前卡住了,我有压缩部分工作,但是我真的不确定如何解压缩句子。我的意思是我知道如何阅读文本文件,但不知道如何通过独特的单词和位置重新创建原始句子。
这是我目前的代码:
###This section will compress the sentence(s)###
txt_file = open("User_sentences.txt","wt")
user_sntnce = input(str("\nPlease enter the sentence(s) you would\nlike compressed.\n\n➜ "))
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)
您可以将句子按空格分成列表,然后枚举该列表并将位置存储在defaultdict中,这样您就可以创建每个单词的位置列表(另外,您也不需要)将一个空间分成几个部分):
from collections import defaultdict
positions = defaultdict(list)
user_sentence = 'ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY'
sentence = user_sentence.split()
for position, word in enumerate(list(sentence), start=1):
positions[word].append(position)
结果是:
defaultdict(<class 'list'>, {'WHAT': [3, 11], 'ASK': [1, 10], 'COUNTRY': [5, 17], 'NOT': [2], 'CAN': [6, 13], 'FOR': [8, 15], 'DO': [7, 14], 'YOU': [9, 12], 'YOUR': [4, 16]})