Итак, я написал небольшой скрипт, который принимает текстовые файлы в качестве ввода, читает каждую строку и пытается проверить ее как электронную почту. Если он проходит, он записывает строку в новый («чистый») файл, если он не проходит, он разбивает его на пробелы и пытается снова проверить его. Теперь, если он пройдет это время, он записывает строку в новый файл, и если она терпит неудачу, она игнорирует строку.Способ проверки дубликатов перед записью в файл?
Вещь, такая как она, мой сценарий может писать дубликаты писем в выходные файлы. Как мне обойти это и проверить наличие дубликатов в выходном файле перед записью?
Вот соответствующий код:
// create reading and writing buffers
scanner := bufio.NewScanner(r)
writer := bufio.NewWriter(w)
for scanner.Scan() {
email := scanner.Text()
// validate each email
if !correctEmail.MatchString(email) {
// if validation didn't pass, strip and lowercase the email and store it
email = strings.Replace(email, " ", "", -1)
// validate the email again after cleaning
if !correctEmail.MatchString(email) {
// if validation didn't pass, ignore this email
continue
} else {
// if validation passed, write clean email into file
_, err = writer.WriteString(email + "\r\n")
if err != nil {
return err
}
}
} else {
// if validation passed, write the email into file
_, err = writer.WriteString(email + "\r\n")
if err != nil {
return err
}
}
}
err = writer.Flush()
if err != nil {
return err
}
Это прекрасно. Я отредактировал свой код, чтобы включить ваше решение, и он элегантный и учу. Благодаря! – Arthmost