Question
Codio challenge python Challenge: variable length records Variable Length Record Load the pipe-delimited file P. It is organized with 3 fields on each line: firstname|lastname|birthday.
Codio challenge python
Challenge: variable length records
Variable Length Record
Load the pipe-delimited file P. It is organized with 3 fields on each line: firstname|lastname|birthday.
Search for the firstname F and lastname L, replacing the birthday with B. Write the file back out in the same pipe-delimited format.
Check It!
LAST RUN on 2/25/2018, 1:18:21 PM
Program Output
Your program output did not match the expected output. Your output: Adam|Smith|11111985 Theodore|Anderson|20031990 Adam K|Smith|09091999 Monty|Biscuit-Barrel|18101980 Adam|Smithers|00000000 Ruthy|Anderson|06062010 Expected output: Adam|Smith|11111985 Theodore|Anderson|20031990 Adam K|Smith|09091999 Monty|Biscuit-Barrel|18101980 Adam|Smithers|00000000 Ruthy|Anderson|06062010
import sys
P= sys.argv[1]
F= sys.argv[2]
L= sys.argv[3]
B= sys.argv[4]
# Our Helper functions:
# Loads the file at filepath
# Returns a 2d array with the data
def load2dArrayFromFile(filepath): # Your code goes here:
#open the file in read mode with open(filepath, 'r') as rfile: totallines = rfile.read().split(' ')
while '' in totallines: totallines.remove('')
loadedArray = [eachline.split('|') for eachline in totallines]
return loadedArray
# Searches the 2d array 'records' for firstname, lastname.
# Returns the index of the record or -1 if no record exists
def findIndex(records, firstname, lastname):
# Your code goes here: for eachline in records: if firstname == eachline[0] and lastname == eachline[1]: return records.index(eachline)
return -1
# Sets the birthday of the record at the given index
# Returns: nothing
def setBirthday(records, index, newBirthday): # Your code goes here: line = records[index]
#store the birthday date line[2] = newBirthday
records[index] = line
# Convert the 2d array back into a string
# Return the text of the 2d array
def makeTextFrom2dArray(records): # Your code goes here:
filewriter = str()
for eachline in records: filewriter += "|".join(eachline) + " "
return filewriter
# ----------------------------------------------------------------
#
# Our main code body, where we call our functions.
#
# ----------------------------------------------------------------
# Load our records from the file into a 2d array
records= load2dArrayFromFile(P)
# Find out which index, if any, has the name we are hunting
indexWeAreHunting= findIndex(records, F, L)
# Set the birthday record to the one we were passed
setBirthday(records, indexWeAreHunting, B)
# Convert the records into a text string
output= makeTextFrom2dArray(records)
# Your code goes here
# write the text string out to the file
with open(P,'w') as wfile: wfile.write(output)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started