python中的空白条带和重新保存.txt

时间:2013-01-10 16:25:39

标签: python text-parsing removing-whitespace

我正在构建一个大约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

3 个答案:

答案 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()