Instructions
Requirements and Specifications
Source Code
# U.R. Name
# AIST 2120: Programming Assignment 4 #! Python 3
# Submission D
import re
import os
import sys
if __name__ == '__main__':
# Define the folder
homeFolder = "C:\\"
userDir = "Eduardo"
desktopPath = os.path.join(homeFolder, 'Users', userDir, 'Desktop', 'PA4')
os.chdir(desktopPath)
# Define here the input filename
INPUT_FILENAME = "AdminIn.txt"
# Define the regex for emails
email_regex = r'([M-Zm-z][A-Za-z0-9]+@[A-Za-z]+(\.com|\.org))'
dates_regex = r'([1-9]|0[1-9]|[12][0-9]|3[01])(/|-)([1-9]|0[1-9]|1[012])(/|-)(19|20)\d\d'
phone_regex = r'(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})'
# Create lists to store emails, dates and phones
emails = []
dates = []
phones = []
"""
PRINT HEADER
"""
print("{:>50s}".format('-'*43))
print("{:>10s}{:>20s}{:>20s}".format("---", "AIST 2120","---"))
print("{:>10s}{:>30s}{:>10s}".format("---", "Programming Assignment 4", "---"))
print("{:>50s}".format('-'*43))
print()
print("{:>2s}{:>45}{:>5s}".format("***", "WELCOME to the HEDGE OF PROTECTION HOSPITAL", "***"))
print("{:>4s}{:>43s}{:>5s}".format("***", "ADMISSIONS DEPARTMENT: M - Z Patient Data", "***"))
print("{:>5s}{:>35s}{:>10s}".format("***", '*'*30, "***"))
print()
"""
PRINT INFO
"""
print(f"The input filename is /{INPUT_FILENAME}/")
print()
print("An output file name for storing patient email and birthdate information, along\nwith available hospital phone numbers, is needed.")
output_filename = input("Please enter a file name ending in .txt: ")
print()
print(f"Admin section's M - Z output filename is /{output_filename}/")
print()
print()
# Open file
with open(INPUT_FILENAME, 'r') as f:
# Read lines
lines = f.readlines()
# Loop through lines
for line in lines:
# Find emails
match = re.search(email_regex, line)
if match != None:
emails.append(match.group())
match = re.search(dates_regex, line)
if match != None:
dates.append(match.group())
match = re.search(phone_regex, line)
if match != None:
phones.append(match.group())
# Check for emails
if len(emails) > 0:
print("Patient emails to be added to the HOP newsletter distribution are:")
print('[\t', end='')
for email in emails:
print(f"\t'{email}'\n",end='')
print(']\n',end='')
else:
print("Admission Section M - Z has no new patients, therefore no patient EMAILS pending at this time.")
print()
# Check of BIRTHDATES
if len(dates) > 0:
print("Basic age demographics for new M = Z admissions are as follow:")
print('[\t', end='')
for date in dates:
print(f"\t'{date}'\n", end='')
print(']\n', end='')
else:
print("No new patient BIRTHDATES are available at this time.")
print()
# Check for phones
if len(phones) > 0:
print("The new PHONE NUMBERS for adding to the emergency notification system are:")
print('[\t', end='')
for phone in phones:
print(f"\t'{phone}'\n", end='')
print(']\n', end='')
else:
print("No new PHONE NUMBERS are available for adding to the emergency notification system.")
print()
# Check if the file has to be created
if len(emails) > 0 or len(dates) > 0 or len(emails) > 0:
with open(output_filename, 'w+') as fo:
for phone in phones:
fo.write(phone + '\n')
for email in emails:
fo.write(email + '\n')
for date in dates:
fo.write(date + '\n')
else:
print("No new HOP Admin M - Z section matches were found, so NO OUTPUT file was created!")
print()
print("*** Processing of ADMISSIONS DEPARTMENT (M - Z) data is COMPLETE ***")
input("Press any key to exit.")
sys.exit(0)
"""
# Now, display
print(emails)
print(phones)
print(dates)
line = 'maria is aerewrfmaria@gmail.comwefewf aaa'
line2 = 'qj9paocivjczpoxic10/31/2021ajsidjvojpcxozijc;lkekjlmnfer'
line3 = 'gsdf800-567-4566asdgsdf800-567-4566asd'
matched = bool(re.match(phone_regex, line3))
if matched:
print("Found")
else:
print("Not found")
print(re.search(dates_regex, line2))
"""