如何从tsv文件中删除低值

2024-06-16 11:57:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个TSV文件:

    kind        10
    men        9
    number        8
    animated        7
    blade        6
    jolly        5
    manage        4
    move         3
    complete        2
    meat        1

我想删除所有旁边数字小于5的单词

因此,只有:

    Output: 
    kind        10
    men        9
    number        8
    animated        7
    blade        6
    jolly        5

我想把它作为python代码来完成。我在想,也许我可以把它放在一个列表中,然后从列表中查看数字,如果少于5,它就会被删除。但我不知道该怎么做

大概是这样的:

    new_file = open(the_file,encoding="utf-8")
    data = new_file.readlines()
    new_list = []
    for values in data:
        if values > 5:
            new_list.append(values)









   

Tags: 文件number列表newdatatsv数字list
3条回答

首先你应该读入这个文件。这将为您提供文件中每一行的列表:

with open('test.txt', 'rt') as file:
    content = file.readlines()

现在,检查从每行最后一位到第二位的整数就足够了(去掉换行符后)。将其与5进行比较,然后将其写回文件,如下所示:

with open('test.txt', 'wt') as file:
    file.writelines([c for c in content if int(c.strip()[-2:]) >= 5])

如果你在看这种文件,我真的会去看熊猫。这基本上比类固醇更有效

代码大致如下所示:

df = pd.read_csv('file.tsv', sep='\t')
df = df.loc[4 < df['column_name']]

欢迎来到社区。 正如其他人所建议的,你很可能会使用熊猫。如果要使用csv模块,可以执行以下操作:

import csv

tsv_file = open("example.tsv")
read_tsv = list(csv.reader(tsv_file, delimiter="\t"))

for row in read_tsv:
    if float(row[1]) < 5:
        read_tsv.remove(row)

它将文件读入一个列表列表,每行为一个列表。如果它的值总是第二个,你可以这样读取它,并从较大的列表中删除该行。希望有帮助

编辑: 对不起,我刚看到你的评论。试试我在这篇文章中编辑的东西(我对CSV阅读器做了一些错误的假设,但我认为它现在已经修复了。希望它能工作

相关问题 更多 >