Обновление: с тех пор было предложено частичное решение с использованием регулярных выражений.Обратите внимание, что следующее решение не работает с использованием регулярных выражений и вместо этого ищет любую последовательность любого символа длиной шесть или более.
Тестовые данные:
number,sequence,status
1,kjhfklashfkldflkhasdfl,0
2,aaaaaljgkldfkjgldkfjgfldj,0
3,bbbbbbjigdfsjgjg,0
4,ccCccCCcjjfijsdfjsdf,0
5,klsjdflsjdfhdddddjnjlkhngjk,0
6,kjkljfhnlasjkdfheeeeeeejjjeeeeeeeeeekjdkljfleeef,0
7,jhfshffFffFFFFffkljjjj908u89,0
Код для поиска MNR длины 6или больше:
import csv
def contains_mnr(sequence):
start_char = "$" # choose a character that is sure not to be in the sequence
count = 0
seq_lower = sequence.lower()
for pos in range(0, len(seq_lower)):
if seq_lower[pos] == start_char:
count += 1
else:
start_char = seq_lower[pos]
count = 1
if count >= 6:
return True
return False
with open("input.csv", "r") as input_file:
with open("output.csv", "w") as output_file:
reader = csv.DictReader(input_file, dialect=csv.unix_dialect())
writer = csv.writer(output_file, dialect=csv.unix_dialect())
writer.writerow(reader.fieldnames)
for row in reader:
if contains_mnr(row["sequence"]):
writer.writerow([
row["number"],
row["sequence"],
row["status"]
])
Обратите внимание, что диалект CSV, возможно, должен быть адаптирован к системе, в которой выполняется код, и файлы данных генерируются.
Вывести указанные тестовые данные выше:
"number","sequence","status"
"3","bbbbbbjigdfsjgjg","0"
"4","ccCccCCcjjfijsdfjsdf","0"
"6","kjkljfhnlasjkdfheeeeeeejjjeeeeeeeeeekjdkljfleeef","0"
"7","jhfshffFffFFFFffkljjjj908u89","0"