Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中筛选行上的文本文件_Python_Csv_Row - Fatal编程技术网

在python中筛选行上的文本文件

在python中筛选行上的文本文件,python,csv,row,Python,Csv,Row,我正在尝试根据python中的此行筛选文本文件: '2/2(100%)' '2/2(100%)' '2/3(67%)' '1/2(50%)' '3/3(100%)' '2/3(67%)' '3/3(100%)' '2/3(67%)' '7/9(78%)' '17/18(94% 我只保留/后面的数字大于或等于5的行。 我设法将行信息放入一个列表中,然后在“/”上拆分,并保留第一个元素。我再次拆分该值,并保留该操作中的零元素,即数字。我将数字转换为整数,并将其用于if语句

我正在尝试根据python中的此行筛选文本文件:

'2/2(100%)' 
'2/2(100%)' 
'2/3(67%)'  
'1/2(50%)'  
'3/3(100%)' 
'2/3(67%)'  
'3/3(100%)'
'2/3(67%)'  
'7/9(78%)'  
'17/18(94%
我只保留/后面的数字大于或等于5的行。 我设法将行信息放入一个列表中,然后在“/”上拆分,并保留第一个元素。我再次拆分该值,并保留该操作中的零元素,即数字。我将数字转换为整数,并将其用于if语句(如果数字>=5,则为writerow)。但是代码现在不起作用。这是我的代码,我有两种不同的方法将数字转换为整数:

methyl = []
with open("zr518_13_CpG_meth.bed", 'r') as txtfile,         open("zr518_13_CpG_meth_5X.bed", "w") as newfile:
reader = csv.reader(txtfile, delimiter = '\t')
textwriter = csv.writer(newfile, delimiter = '\t')
    for row in reader:
        methyl.append(row[3])
        fragments = [elem.split('/')[1] for elem in methyl]
        numbers = [elems.split('(')[0] for elems in fragments]
        # new_numbers = []
        # for n in numbers:
            # new_numbers.append(int(n))
        for i in range(0,len(numbers)):
            numbers[i]=int(numbers[i])
            if i > 4:
                textwriter.writerow(row) 

您正在将您读取的每一行添加到methyl中,然后检查您读取的每一行,如果methyl中有一行分母大于4。因此,当您读取分母大于4的单行时,之后的每一行都将写入输出,其次数与之前分母大于4的行相同

您可以通过将循环替换为以下内容来解决此问题:

for row in reader:
    denominator = int(row[3].split('/')[1].split('(')[0])
    if denominator > 4:
        textwriter.writerow(row)

它以什么方式不起作用?过滤不起作用,值小于5的行仍然被写入新文件,基本上整个文件都被再次写入,我不知道整数值是否被保存。