将过滤后的列表写入python中的文件

问题描述 投票:0回答:2

我正在尝试根据某些条件从文件创建列表,然后过滤这些项并将它们写入另一个文件。我有以下内容,但新文件为空。

def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
    fd =open(filename)
    lines = fd.readlines()
    filteredlines = []
    fd.close()
    for l in lines:
        if l[0] in criteria:
            filteredlines.append(l)
    return filteredlines
    fd=open('2015PopEstimateSubset.csv','w')
    fd.write(filteredlines.sort)
    fd.close

readlinesfromfilecriteria("2015PopEstimatesComplete.csv")
python python-3.x file output
2个回答
1
投票

你在开始写任何东西之前做return。重新排列代码以修复它,很可能你想在写入后移动return。此外sort()没有返回任何东西,但在原地排序,所以你的write()是静脉。您需要使用sorted()或对列表进行排序然后编写。

您还应该使用with ...语法进行文件访问或添加正确的错误处理。

所以你很可能想要这个:

def readlinesfromfilecriteria(filename, criteria = ['M','S','T']):
    with open(filename) as fd:
        lines = fd.readlines()

    filteredlines = [l for l in lines if l[0] in criteria]
    with open('2015PopEstimateSubset.csv','w') as fd:
        fd.write(sorted(filteredlines))

readlinesfromfilecriteria("2015PopEstimatesComplete.csv")

-2
投票

你应该调用filteredlines.sort(),然后调用filteredlines: fd.write(line)中的行

© www.soinside.com 2019 - 2024. All rights reserved.