使用文本文件和列表重新创建句子

时间:2016-03-22 21:00:33

标签: python

我对Python比较陌生,我目前正在开发一个压缩程序,它使用包含列表中单词位置的列表和构成句子的单词列表。到目前为止,我已经在两个函数中编写了我的程序,第一个函数; ' compression',获取构成句子的单词和这些单词的位置。我的第二个函数称为“重新创建”,此函数使用他的列表重新创建句子。然后将重新创建的senetence存储在名为recreate.txt的文件中。我的问题是,单词和构成句子的单词的位置不会写入各自的文件中,而是“重新创建”。文件未被创建和写入。任何帮助将不胜感激。谢谢:))

sentence = input("Input the sentence that you wish to be compressed") 
sentence.lower()
sentencelist = sentence.split() 
d = {} 
plist = [] 

wds = []
def compress():     
    for i in sentencelist:
        if i not in wds:
            wds.append(i)
    for i ,j in enumerate(sentencelist):
        if j in (d):  
            plist.append(d[j]) 
        else:
            plist.append(i)      
    print (plist) 

    tsk3pos = open ("tsk3pos.txt", "wt")    

    for item in plist:
        tsk3pos.write("%s\n" % item)    

    tsk3pos.close()                     
    tsk3wds = open ("tsk3wds.txt", "wt")    

    for item in wds:
        tsk3wds.write("%s\n" % item)    
    tsk3wds.close() 

    print (wds) 

def recreate(compress): 
    compress()
    num = list()
    wds = list()
    with open("tsk3wds.txt", "r") as txt: 
        for line in txt:
            words += line.split()

    with open("tsk3pos.txt", "r") as txt:
        for line in txt:
            num += [int(i) for i in line.split()]



    recreate = ' '.join(words[pos] for pos in num)

    with open("recreate.txt", "wt") as txt:
        txt.write(recreate) 

已更新 我已经修复了除重新创建功能之外的所有其他问题,这些功能无法重新创建'虽然文件并不会重新创建带有单词的句子 它用位置重新创建句子。

def recreate(compress): #function that will be used to recreate the compressed sentence.
    compress()
    num = list()
    wds = list()

    with open("words.txt", "r") as txt: #with statement opening the word text file
        for line in txt: #iterating over each line in the text file.
            words += line.split() #turning the textfile into a list and appending it to num

    with open("tsk3pos.txt", "r") as txt:
        for line in txt:
            num += [int(i) for i in line.split()]

    recreate = ' '.join(wds[pos] for pos in num)

    with open("recreate.txt", "wt") as txt:
        txt.write(recreate) 

    main()



def main():
    print("Do you want to compress an input or recreate a compressed input?")
    user = input("Type 'a' if you want to compress an input. Type 'b' if you wan to recreate an input").lower()
    if user not in ("a","b"):
        print ("That's not an option. Please try again")
    elif user == "a":
        compress()
    elif user == "b":
        recreate(compress)
    main()

main()

1 个答案:

答案 0 :(得分:0)

更简单(效率更低)的方法:

 recreate_file_object  =  open ( "C:/FullPathToWriteFolder/recreate.txt"   ,   "w"   )
 recreate_file_object.write ( recreate ) 
 recreate_file_object.close ( )