如何遍历文件中每行的每个单词?
我有一个字典,内容是:
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
总计: 40ba 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"语句是用来干什么的?