我正在尝试在Python中使用正则表达式逐行解析大制表符分隔的文本文件,并打印其中该行包含5个或更多0/1
或1/1
实例的行。
我的脚本差不多就在那里了,但是我正在努力处理5个或更多实例。
这将打印出一个匹配的行。
import re
f = open ("infile.txt", "r")
out = open("outfile.txt", "w")
for line in f:
if re.match(r"(.*)(0|1)/(1)(.*)", line):
print >> out, line,
要仅打印具有5个或更多匹配项的行,我尝试按以下方式尝试
findall
和finditer
但它们不起作用:for line in f:
x = len(re.findall(r"(.*)(0|1)/(1)(.*)", line)):
if x > 5:
print >> out, line,
谁能帮我这个?
这是文本文件中一行的示例(文件中的所有空格都是制表符):
X 6529 . C A,G PASS AC=4,2;AF=0.6777 1/1:0,20 0/1:0,16 0/1:0,16 0/0:4,16 0/0:3,1
最佳答案
您可以使用{5,}匹配模式5次或更多次
import re
f = open ("data.txt", "r")
out = open("dataout.txt", "w")
for line in f:
if re.match(r"(.*([01]/1.*){5,}", line):
print >> out, line,
关于python - 如何仅打印具有五个或更多正则表达式匹配项的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15845693/