我正在构建一个大约30,000个文本文件的数据集,用于构建内容分析数据集。我试图使用正则表达式循环遍历批量文件,这些表达式可以拉出并删除我需要的数据。
问题:第一个文件看起来很棒,但是当我尝试写入文件时,每个后续文件都会打印前一个文件中的字符串。如:
文件1:文件1中的文本 文件2:文件2中的文本+文件1中的文本 文件n:文件n中的文本+文件1-(n-1)中的文本 代码如下所示:
import sys
import re
import glob
string = ''
for n in glob.glob("*.txt"):
input = open(n, "r")
s = input.read()
for line in s:
string += line.replace("\n"," ")
input.close()
for n in glob.glob("*.txt"):
input2 = open(n, "w")
input2.write(string)
input2.close
答案 0 :(得分:1)
问题在于您对变量string
由于它在for循环之外,它会附加以前文件的内容
每次处理新文件时都需要初始化此变量的内容
所以只需在循环中移动初始化
答案 1 :(得分:0)
您的string
变量未设置回string=''
。因此,当您执行string += ....
时,您正在附加内容,从而解决您的问题。
在你的for循环追加结束时:
string = ''
您的input2.close()
需要括号来执行此功能才能关闭文档。
答案 2 :(得分:0)
input is a keyword将其更改为input1并删除第二个内部循环。还要在每次循环开始时重置字符串。
import sys
import re
import glob
for n in glob.glob("*.txt"):
string = ''
input1 = open(n, "r")
s = input1.read()
for line in s:
string += line.replace("\n"," ")
input1.close()
input2 = open(n, "w")
input2.write(string)
input2.close()