Я запускаю код для очистки базы данных. В основном, если какое-либо значение появляется в списке, его следует удалить.
Ниже вы можете увидеть код:
pattern = re.compile("((?:\d{10}|\d{9}|\d{8}|\d{7}|\d{6}|\d{5}|\d{4})(?:-?[\d]))?(?!\S)")
cc = pattern.findall(a)
print("cpf:", cpf)
print("ag:", ag)
print("cc start:",cc)
for i in cc:
print("i:",i)
try:
while i in ag: cc.remove(i)
except:pass
try:
while i in cpf:cc.remove(i)
except:pass
try:
while "" in i:cc.remove(i)
except:pass
print("final cc:",cc)
Он выводит на моем экране следующее:
cpf: ['00770991092']
ag: 3527
cc start: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '00770991092', '', '', '', '', '', '', '', '', '01068651-0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']
i:
i: 01068651-0
final cc: ['00770991092']
Ну, значения ''
удалены, кажется, что они работают нормально. Однако, поскольку «00770991092» является значением внутри cpf
, его следовало удалить, но это не так. В "final cc" это значение, которое я получаю, и оно должно быть '01068651-0'.
Даже если я запусту эту проверку: if cc в cpf: print (True) It подтверждает, что это правда.
Чего мне не хватает?
PS .: Я нахожу весьма интригующим, что когда я print(i)
внутри предложения, появляются только два значения (и одно пустое) .