簡體   English   中英

如何在一行中的每個單詞然后在文件中的每一行之間循環?

[英]how to loop around every word in a line and then every line in a file?

我有像這樣的字典

list1={'ab':10,'ba':20,'def':30}. 

現在我的輸入文件包含:

絕對清晰度
ba ab

我已經編碼:

    filename=raw_input("enter file:")
    f=open(filename,'r')
    ff=open(filename+'_value','w')
    for word in f.read().split(): 
    s=0
    if word in list1:
        ff.write(word+'\t'+list1[word]+'\n');
        s+=int(list1[word])
    else:
        ff.write(word+'\n')
     ff.write("\n"+"total:%d"%(s)+"\n") 

現在,我希望輸出文件包含:

大約10
防御30
合計:40

20 20
大約10
合計:30

無法為每一行循環它。 我該怎么辦? 我嘗試了一些使用f.readlines(),f.read()的變體,並嘗試循環一次,然后循環兩次。 但我做對了。

除了立即給出答案外,讓我簡要介紹您的要求:

要讀取整個文件:

f = open('myfile','r')
data = f.read()

要遍歷文件中的每一行:

for line in data:

要遍歷該行中的每個單詞:

    for word in line.split():

明智地使用它來獲取想要的東西。

您需要制作2個循環,而不僅僅是一個循環:

filename = raw_input("enter file:")
with open(filename, 'r') as f, open(filename + '_value','w') as ff:
    # Read each line sequentially
    for line in f.read(): 
        # In each line, read each word
        total = 0
        for word in line.split():
            if word in list1:
                ff.write("%s\t%s\n" % (word, list1[word]))
                total += int(list1[word])
            else:
                ff.write(word+'\n')

        ff.write("\ntotal: %s\n" % total)   

我還清理了一點代碼以使其更具可讀性。 另請參見python“ with”語句的用途是什么? 如果您想了解with

 with open("in.txt","r") as f:
    with open("out.txt","w") as f1:
        for line in f:
            words = line.split() # split into list of two words
            f1.write("{} {}\n".format((words[0]),list1[words[0]]))  # write first word plus value
            f1.write("{} {}\n".format((words[1]),list1[words[1]])) # second word plus value
            f1.write("Total: {}\n".format((int(list1[words[0]]) + int(list1[words[1]])))) # finally add first and second and get total

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM