在python中筛选行上的文本文件
我正在尝试根据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语句
'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的行仍然被写入新文件,基本上整个文件都被再次写入,我不知道整数值是否被保存。