使用自动分配的文件名将列表中的每个项目写入单独的 txt 文件 (python=3.6)
Wrting each item in a list into a separate txt file with auto-assigned filename (python=3.6)
我正在使用 textract 从 PDF 文件中获取纯文本。对于目录中每个 PDF 文件的纯文本,我将其附加到列表 filetext_list
中。我想将列表中的每一项写入一个单独的 txt 文件,并使用自动分配的文件名,如 "article_1"。这是我到目前为止所做的:
import textract
import os
filetext_list = []
directory=os.getcwd()
for file in os.listdir(directory):
txt = textract.process(file, method = 'pdfminer')
filetext_list.append(txt)
for i in range(2):
for filetext in filetext_list:
with open('artile_{0}.txt'.format(i),'w') as f:
f.write(str(filetext))
f.close()
输出文件是 "article_0" 和 "article_1",它们的命名正确。但是,这两个文件都包含列表中相同项目的文本。我希望它们每个都包含列表中一个单独项目的文本。知道为什么代码失败了吗?此外,我想通过执行 .replace('\n', ' ')
之类的操作来消除文本中的“\n”元素,但我不知道这适合代码中的什么位置。谢谢!
你到底想做什么?我想我可能误会你了。
最终的结果基本上是你想把每个 pdf 转换成一个 txt 文件对吗?
import textract
import os
filetext_list = []
directory=os.getcwd()
for file in os.listdir(directory):
txt = textract.process(file, method = 'pdfminer')
filetext_list.append(txt)
for index, text in enumerate(filetext_list) :
with open('article_{0}.txt'.format(index),'w') as f:
f.write(str(text).replace("\n",""))
因此,如果您的目录内容为 [thing1.pdf、thing2.pdf、thing3.pdf],那么您生成的新文件将为 article_0(内容为 thing1.pdf), article_1 (包含 thing2.pdf 的内容), article_2 (包含 thing3.pdf 的内容)
我不确定如何就您的异步代码出错的地方提供指导。但是你最好重新开始思考这个问题,而不是尝试继续使用你目前拥有的逻辑。
每个新 "open" 加上写入都会覆盖原始文件。
所以您得到的是 article_0 和 article_1 以及目录中文件列表中最后一个 pdf 的内容。
你的 "range(2)" 循环也会为目录中的每个文件调用一次,所以 article_0 的内容看起来像“第一个文件的内容,然后是第一个文件的内容再次,然后是第二个文件的内容,然后是第一个文件的内容,然后是第二个文件的内容,然后是第三个文件,然后是第一个 -> 第二个 -> 第三个 -> 第四个。依此类推。
此外,如果您这样做 "with open",则无需关闭文件。它会自动关闭 afaik。
我正在使用 textract 从 PDF 文件中获取纯文本。对于目录中每个 PDF 文件的纯文本,我将其附加到列表 filetext_list
中。我想将列表中的每一项写入一个单独的 txt 文件,并使用自动分配的文件名,如 "article_1"。这是我到目前为止所做的:
import textract
import os
filetext_list = []
directory=os.getcwd()
for file in os.listdir(directory):
txt = textract.process(file, method = 'pdfminer')
filetext_list.append(txt)
for i in range(2):
for filetext in filetext_list:
with open('artile_{0}.txt'.format(i),'w') as f:
f.write(str(filetext))
f.close()
输出文件是 "article_0" 和 "article_1",它们的命名正确。但是,这两个文件都包含列表中相同项目的文本。我希望它们每个都包含列表中一个单独项目的文本。知道为什么代码失败了吗?此外,我想通过执行 .replace('\n', ' ')
之类的操作来消除文本中的“\n”元素,但我不知道这适合代码中的什么位置。谢谢!
你到底想做什么?我想我可能误会你了。
最终的结果基本上是你想把每个 pdf 转换成一个 txt 文件对吗?
import textract
import os
filetext_list = []
directory=os.getcwd()
for file in os.listdir(directory):
txt = textract.process(file, method = 'pdfminer')
filetext_list.append(txt)
for index, text in enumerate(filetext_list) :
with open('article_{0}.txt'.format(index),'w') as f:
f.write(str(text).replace("\n",""))
因此,如果您的目录内容为 [thing1.pdf、thing2.pdf、thing3.pdf],那么您生成的新文件将为 article_0(内容为 thing1.pdf), article_1 (包含 thing2.pdf 的内容), article_2 (包含 thing3.pdf 的内容)
我不确定如何就您的异步代码出错的地方提供指导。但是你最好重新开始思考这个问题,而不是尝试继续使用你目前拥有的逻辑。
每个新 "open" 加上写入都会覆盖原始文件。
所以您得到的是 article_0 和 article_1 以及目录中文件列表中最后一个 pdf 的内容。
你的 "range(2)" 循环也会为目录中的每个文件调用一次,所以 article_0 的内容看起来像“第一个文件的内容,然后是第一个文件的内容再次,然后是第二个文件的内容,然后是第一个文件的内容,然后是第二个文件的内容,然后是第三个文件,然后是第一个 -> 第二个 -> 第三个 -> 第四个。依此类推。
此外,如果您这样做 "with open",则无需关闭文件。它会自动关闭 afaik。