Сломанный фильтр.Код должен перемещать только учетные записи с адресом электронной почты, которые имеют 2 заглавные буквы - PullRequest
0 голосов
/ 27 июня 2019

Приведенный ниже код должен перемещать только те учетные записи с адресом электронной почты, которые имеют 2 заглавные буквы в конце и 2 знака после знака "@". Фильтр, кажется, ловит все вместо этого.

Я изменил, как далеко возвращается значение в переменных username и check_email.

mike@gmail.com
toTR@yahoo.com
erferTT@hotmail.com 
fwefEE@yahoo.com
thisYY@aol.com
that@yahoo.com

Первый и последний адреса электронной почты должны быть пропущены, а остальные должны быть помещены в новый файл, но также извлекаются строчные адреса электронной почты.

Спасибо

import sys
import argparse
from datetime import datetime

def parse_arg():

    """Parses the args"""    
    if len(sys.argv) < 1:
        print("Args: Input filename")
        raise RuntimeError("Insufficient arguments.")

    arg_1 = sys.argv[1]

    return arg_1

#Parameter is the filename
filename = parse_arg()

#Create filename for output
output_file_date = datetime.now().strftime("%Y%m%d_%I%M%S")
output_file = output_file_date + '_' + filename

#Access the input file
with open(filename, 'rb') as input_file, open(output_file, 'w') as file_output:

    #Create the header"""
    output_file_header = input_file.readline().decode().replace('\r','')
    file_output.write(output_file_header)

    #Skip the header in the input file
    next(input_file)

       #iterate over file object line by line
        for line in input_file:

        #Create output file objects
        lines = line.decode().split(',')

        #Create the email username variable
        username = lines[1].split('@')[0]

        #Create variable that display last two characters
        check_email = username[-1:]

  #Create file based on business rules and write results to file.
        if check_email.isupper(): #and len(username) < 16:
            output_data = ','.join(lines).replace('\r','')
            file_output.write(output_data)

1 Ответ

0 голосов
/ 27 июня 2019

Вы проверяете здесь последний символ, а не последние 2 символа.

Вместо записи check_email = username[-1:] просто делать check_email = username[-2:]

Определенное число - это количество букв, которые он собирается взять.

Также, как всегда, я бы порекомендовал вам распечатать, что вы на самом деле получаете из каждой строки, чтобы вы лучше понимали и немного лучше видели, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...