如何在python中解析文本文件

时间:2014-04-17 14:58:34

标签: python parsing

我有一个任务:我有一个包含许多文本文件的目录。每个文件都有很多行。每行都有Tab delemeted字段。我必须通过将第一个字段中的值与另一个文本文件中的值进行比较来排除此文件中的某些行。那些“不好的”'我必须复制到一个新的'坏'文件。好的'线(不匹配)我必须复制到另一个' good'文件。最后我应该有很多新文件('好'和'坏')。换句话说,脚本应该解析目录中的每个文件,将每一行与另一个文件中的值进行比较,以防它将该行匹配到新文件中。 我写了这个:

import csv
import sys
import os

prefix = 'dna'
goodFiles = []
badFiles = []

fileList = os.listdir(sys.argv[1])

for f in fileList:
    absFile = os.path.join(os.path.abspath(sys.argv[1]), f )
    newBadF = "BADFile" + "_" + f
    badFile = open(newBadF,'w')
    newGoodF = "GOODFile" + "_" + f
    goodFile = open(newGoodF,'w')
    resultList = open(sys.argv[2], 'rb')
    convertList = list(resultList)
    with open(absFile, 'rb') as csvfile:
        reader = csv.reader(csvfile, delimiter='\t')
        for row in reader:
            for field in convertList:
                if row[0].lower() == field.strip():
                    badFile.writelines('"%s"\n' % row)
                    next
                else:
                    goodFile.writelines('"%s"\n' % row)
                    next

我的脚本不起作用:)即它产生的文件中每行都是这样的列表: " [' 342',' 343',' 344',' 345',' 346', ' 347',' 348',' 349',' 350']"虽然原始文件具有不同的格式,即它没有逗号,但它没有' ['和']' 我的问题:如何修复它并获得与原始格式相同的新文件? 感谢

1 个答案:

答案 0 :(得分:2)

如果您想使用相同的分隔符,则可以像使用csv.reader一样使用csv.writer

bad_writer = csv.writer(badFile, delimiter='\t')
good_writer = csv.writer(goodFile, delimiter='\t')
...
if row[0].lower() == field.strip():
    bad_writer.writerow(row)
else:
    good_writer.writerow(row)

致电时

badFile.writelines('"%s"\n' % row)

%格式运算符实际上将行转换为字符串表示

>>> _list = [1,2,3]
>>> str(_list)
'[1, 2, 3]'
>>>