将行写入文档时遇到麻烦

时间:2019-06-12 13:56:24

标签: python

我需要这个脚本来显示每个单词出现在哪些行上。问题是我无法将行写到文档中

def WordOnLine():
    file = open("tekstbestand.txt","r")
    file2 = open("aantalwoorden","a")
    lineN = 0
    for line in file:
        sent = line.split()
        lineN += 1
        for word in sent:
            if len(word) >= 4:
                if word in file2:
                    word = word.replace(word,word+" " +lineN + "\n")
                else:
                    file2.append(word + " " + str(lineN) + "\n")
    file.close()
    file2.close()
WordOnLine()

2 个答案:

答案 0 :(得分:0)

尝试:

file2 = open("aantalwoorden","a+")

file2.write(word + " " + str(lineN) + "\n")

以下是一些解释: https://www.guru99.com/reading-and-writing-files-in-python.html

答案 1 :(得分:0)

一些样式上的更改和一些更正,以使您更进一步,其中一些已经指出。如果运行的是Python 3,则可以删除语句1(从__future __ 中删除等)。在第4行,您需要打开aantalwoorden,并指定“ a +”,以便可以读取和附加文件。这将消除io.UnsupportedOperation异常。第4行还使用“ with”语句打开两个文件,将其包围的块包装在“上下文管理器”中,该文件在该块终止时将自动关闭两个文件。语句12已修改,因此,如果语句12曾经执行过,则尝试将字符串与整数连接时不会出现异常。最后,语句12是使用Python 3打印功能将输出写入file2的一种简单方法。

关于您的程序逻辑,我不声称它符合您的意图。

from __future__ import print_function #1

def WordOnLine():
    with open("tekstbestand.txt","r") as file, open("aantalwoorden","a+") as file2: #4
        lineN = 0
        for line in file:
            sent = line.split()
            lineN += 1
            for word in sent:
                if len(word) >= 4:
                    if word in file2:
                        word = word.replace(word,word+" " +str(lineN) + "\n") #12
                    else:
                        print(word, lineN, file=file2)
WrdOnLine()