【问题标题】:How can we write a text file from variable using python?我们如何使用 python 从变量中写入文本文件?
【发布时间】:2021-04-04 14:08:42
【问题描述】:

我正在从事 NLP 项目,并使用 PyPDF2 从 pdf 中提取了文本。此外,我删除了空白行。现在,我的输出显示在控制台上,但我想用存储在我的变量(文件)中的相同数据填充文本文件。

以下是从文本文件中删除空行的代码。

for line in open('resume1.txt'):
  line = line.rstrip()
  if line != '':
    file=line
    print(file)

控制台输出: 蚀, 视觉工作室 2012, Arduino IDE, 爪哇 , HTML, CSS 2013 Excel .

现在,我想在我的 (resume1.txt) 文本文件中保存相同的数据。我使用了三种方法,但所有这些方法都会在我的 resume1.txt 文件中打印一个点。如果我在文本文件的末尾看到,那么有一个正在打印的点。

方法一:

with open("resume1.txt", "w") as out_file:
    out_file.write(file)

方法二:

print(file,  file=open("resume1.txt", 'w'))

方法三:

pathlib.Path('resume1.txt').write_text(file)

能否请您帮我填写文本文件。感谢您的合作。

【问题讨论】:

  • 如果您在 循环之后编写此代码,则 file 将包含 last 非空行,恰好是句号/点。
  • 嗨,我应该在循环中写这个吗?
  • @Yousaf 是在循环内写入

标签: python python-3.x file variables text


【解决方案1】:

堆栈上的第一个帖子,请原谅格式

new_line = ""

for line in open('resume1.txt', "r"):
    for char in line:
        if char != " ":
            new_line += char
print(new_line)



with open('resume1.txt', "w") as f:
    f.write(new_line)

【讨论】:

  • 您好,感谢您的回复。它只是删除单词之间的空格。但是,我想删除空行...例如 Hello World 输出应该是:Hello World
【解决方案2】:

首先,请注意您正在写入丢失旧数据的同一个文件,我不知道您是否要这样做。除此之外,每次使用这些方法编写时,都会覆盖之前写入输出文件的数据。所以,如果你想使用这些方法,你必须只写1次(写所有数据)。

解决方案

使用方法一:

to_file = []

for line in open('resume1.txt'):
    line = line.rstrip()
    if line != '':
        file = line
        print(file)
        to_file.append(file)

to_save = '\n'.join(to_file)

with open("resume1.txt", "w") as out_file:
    out_file.write(to_save)

使用方法二:

to_file = []

for line in open('resume1.txt'):
    line = line.rstrip()
    if line != '':
        file = line
        print(file)
        to_file.append(file)

to_save = '\n'.join(to_file)

print(to_save, file=open("resume1.txt", 'w'))

使用方法三:

import pathlib

to_file = []

for line in open('resume1.txt'):
    line = line.rstrip()
    if line != '':
        file = line
        print(file)
        to_file.append(file)

to_save = '\n'.join(to_file)

pathlib.Path('resume1.txt').write_text(to_save)

在这 3 种方法中,我使用了to_save = '\n'.join(to_file),因为我假设您想用 EOL 分隔每一行,但如果我错了,如果您不想使用空格,则可以使用 ''.join(to_file) ,或者' '.join(to_file),如果你想把所有的行都放在一个行中。

其他方法

您可以通过使用其他文件来做到这一点,比如'output.txt'。

out_file = open('output.txt', 'w')

for line in open('resume1.txt'):
    line = line.rstrip()
    if line != '':
        file = line
        print(file)
        out_file.write(file)
        out_file.write('\n') # EOL

out_file.close()

另外,你可以这样做(我更喜欢这个):

with open('output.txt', 'w') as out_file:
    for line in open('resume1.txt'):
        line = line.rstrip()
        if line != '':
            file = line
            print(file)
            out_file.write(file)
            out_file.write('\n') # EOL

【讨论】:

  • 现在工作正常。太感谢了。非常感谢。
  • @Yousaf 不客气。如果这有帮助,如果您将此答案标记为解决方案,我将不胜感激。如果这不是解决方案,请提供有关您需要的更多信息。
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多