如何遍历文件中每行的每个单词?

-1 投票
3 回答
1227 浏览
提问于 2025-04-18 09:39

我有一个字典,内容是:

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

现在我的输入文件包含:

ab def
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") 

现在我希望我的输出文件包含:

ab 10
def 30
总计: 40

ba 20
ab 10
总计: 30

我无法对每一行进行循环处理。我该怎么做呢?我尝试过用 f.readlines()、f.read(),还尝试过循环一次、再循环两次,但就是搞不定。

3 个回答

1
 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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

2

我先不直接给你答案,先给你讲讲你问的内容大概是什么:

如果你想读取整个文件的话:

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

如果你想逐行读取文件中的每一行的话:

for line in data:

如果你想逐字读取某一行中的每一个单词的话:

    for word in line.split():

好好利用这些方法,来获取你想要的内容。

1

你需要做两个循环,而不是一个:

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)   

我还稍微整理了一下你的代码,让它更容易阅读。如果你想了解with这个块的用法,可以看看这个链接:Python中的"with"语句是用来干什么的?

撰写回答