Thread Shed PROJECT of "Strings"

@mtf
Hi everyone. I got stuck in the following code. And I wanna help to get out
the link of that project is lying here

[thread sheet project of string]
(https://www.codecademy.com/courses/learn-python-3/projects/thread-shed)

in this code

"""Edith Mcbride   ;,;$1.21   ;,;   white ;,; 
09/15/17   ,Herbert Tran   ;,;   $7.29;,; 
white&blue;,;   09/15/17 ,Paul Clarke ;,;$12.52 
;,;   white&blue ;,; 09/15/17 ,Lucille Caldwell   
;,;   $5.13   ;,; white   ;,; 09/15/17,
Eduardo George   ;,;$20.39;,; white&yellow 
;,;09/15/17   ,   Danny Mclaughlin;,;$30.82;,;   
purple ;,;09/15/17 ,Stacy Vargas;,; $1.85   ;,; 
purple&yellow ;,;09/15/17,   Shaun Brock;,; 
$17.98;,;purple&yellow ;,; 09/15/17 , 
Erick Harper ;,;$17.41;,; blue ;,; 09/15/17, 
Michelle Howell ;,;$28.59;,; blue;,;   09/15/17   , 
Carroll Boyd;,; $14.51;,;   purple&blue   ;,;   
09/15/17   , Teresa Carter   ;,; $19.64 ;,; 
white;,;09/15/17   ,   Jacob Kennedy ;,; $11.40   
;,; white&red   ;,; 09/15/17, Craig Chambers;,; 
$8.79 ;,; white&blue&red   ;,;09/15/17   , Peggy Bell;,; $8.65 ;,;blue   ;,; 09/15/17,   Kenneth Cunningham ;,;   $10.53;,;   green&blue   ;,; 
09/15/17   ,   Marvin Morgan;,;   $16.49;,; 
green&blue&red   ;,;   09/15/17 ,Marjorie Russell 
;,; $6.55 ;,;   green&blue&red;,;   09/15/17 ,
Israel Cummings;,;   $11.86   ;,;black;,;  
09/15/17,   June Doyle   ;,;   $22.29 ;,;  
black&yellow ;,;09/15/17 , Jaime Buchanan   ;,;   
$8.35;,;   white&black&yellow   ;,;   09/15/17,   
Rhonda Farmer;,;$2.91 ;,;   white&black&yellow   
;,;09/15/17, Darren Mckenzie ;,;$22.94;,;green 
;,;09/15/17,Rufus Malone;,;$4.70   ;,; green&yellow 
;,; 09/15/17   ,Hubert Miles;,;   $3.59   
;,;green&yellow&blue;,;   09/15/17   , Joseph Bridges  ;,;$5.66   ;,; green&yellow&purple&blue 
;,;   09/15/17 , Sergio Murphy   ;,;$17.51   ;,;   
black   ;,;   09/15/17 , Audrey Ferguson ;,; 
$5.54;,;black&blue   ;,;09/15/17 ,Edna Williams ;,; 
$17.13;,; black&blue;,;   09/15/17,   Randy Fleming;,;   $21.13 ;,;black ;,;09/15/17 ,Elisa Hart;,; $0.35   ;,; black&purple;,;   09/15/17   ,
Ernesto Hunt ;,; $13.91   ;,;   black&purple ;,;   
09/15/17,   Shannon Chavez   ;,;$19.26   ;,; 
yellow;,; 09/15/17   , Sammy Cain;,; $5.45;,;   
yellow&red ;,;09/15/17 ,   Steven Reeves ;,;$5.50   
;,;   yellow;,;   09/15/17, Ruben Jones   ;,; 
$14.56 ;,;   yellow&blue;,;09/15/17 , Essie Hansen;,;   $7.33   ;,;   yellow&blue&red
;,; 09/15/17   ,   Rene Hardy   ;,; $20.22   ;,; 
black ;,;   09/15/17 ,   Lucy Snyder   ;,; $8.67   
;,;black&red  ;,; 09/15/17 ,Dallas Obrien ;,;   
$8.31;,;   black&red ;,;   09/15/17,   Stacey Payne 
;,;   $15.70   ;,;   white&black&red ;,;09/15/17   
,   Tanya Cox   ;,;   $6.74   ;,;yellow   ;,; 
09/15/17 , Melody Moran ;,;   $30.84   
;,;yellow&black;,;   09/15/17 , Louise Becker   ;,; 
$12.31 ;,; green&yellow&black;,;   09/15/17 ,
Ryan Webster;,;$2.94 ;,; yellow ;,; 09/15/17 
,Justin Blake ;,; $22.46   ;,;white&yellow ;,;   
09/15/17,   Beverly Baldwin ;,;   $6.60;,;   
white&yellow&black ;,;09/15/17   ,   Dale Brady   
;,;   $6.27 ;,; yellow   ;,;09/15/17 ,Guadalupe Potter ;,;$21.12   ;,; yellow;,; 09/15/17   , 
Desiree Butler ;,;$2.10   ;,;white;,; 09/15/17  
,Sonja Barnett ;,; $14.22 ;,;white&black;,;   
09/15/17, Angelica Garza;,;$11.60;,;white&black   
;,;   09/15/17   ,   Jamie Welch   ;,; $25.27   ;,; 
white&black&red ;,;09/15/17   ,   Rex Hudson   
;,;$8.26;,;   purple;,; 09/15/17 ,   Nadine Gibbs 
;,;   $30.80 ;,;   purple&yellow   ;,; 09/15/17   , 
Hannah Pratt;,;   $22.61   ;,;   purple&yellow   
;,;09/15/17,Gayle Richards;,;$22.19 ;,; 
green&purple&yellow ;,;09/15/17   ,Stanley Holland 
;,; $7.47   ;,; red ;,; 09/15/17 , Anna Dean;,;$5.49 ;,; yellow&red ;,;   09/15/17   ,
Terrance Saunders ;,;   $23.70  ;,;green&yellow&red 
;,; 09/15/17 ,   Brandi Zimmerman ;,; $26.66 ;,; 
red   ;,;09/15/17 ,Guadalupe Freeman ;,; $25.95;,; 
green&red ;,;   09/15/17   ,Irving Patterson 
;,;$19.55 ;,; green&white&red ;,;   09/15/17 ,Karl Ross;,;   $15.68;,;   white ;,;   09/15/17 , Brandy Cortez ;,;$23.57;,;   white&red   ;,;09/15/17, 
Mamie Riley   ;,;$29.32;,; purple;,;09/15/17 ,Mike Thornton   ;,; $26.44 ;,;   purple   ;,; 09/15/17, 
Jamie Vaughn   ;,; $17.24;,;green ;,; 09/15/17   , 
Noah Day ;,;   $8.49   ;,;green   ;,;09/15/17   
,Josephine Keller ;,;$13.10 ;,;green;,;   09/15/17 ,   Tracey Wolfe;,;$20.39 ;,; red   ;,; 09/15/17 ,
Ignacio Parks;,;$14.70   ;,; white&red ;,;09/15/17 
, Beatrice Newman ;,;$22.45   ;,;white&purple&red 
;,;   09/15/17, Andre Norris   ;,;   $28.46   ;,;   
red;,;   09/15/17 ,   Albert Lewis ;,; $23.89;,;   
black&red;,; 09/15/17,   Javier Bailey   ;,;   
$24.49   ;,; black&red ;,; 09/15/17   , Everett Lyons ;,;$1.81;,;   black&red ;,; 09/15/17 ,   
Abraham Maxwell;,; $6.81   ;,;green;,;   09/15/17   
,   Traci Craig ;,;$0.65;,; green&yellow;,; 
09/15/17 , Jeffrey Jenkins   ;,;$26.45;,; 
green&yellow&blue   ;,;   09/15/17,   Merle Wilson 
;,;   $7.69 ;,; purple;,; 09/15/17,Janis Franklin   
;,;$8.74   ;,; purple&black   ;,;09/15/17 ,  
Leonard Guerrero ;,;   $1.86   ;,;yellow  
;,;09/15/17,Lana Sanchez;,;$14.75   ;,; yellow;,;   
09/15/17   ,Donna Ball ;,; $28.10  ;,; 
yellow&blue;,;   09/15/17   , Terrell Barber   ;,; 
$9.91   ;,; green ;,;09/15/17   ,Jody Flores;,; 
$16.34 ;,; green ;,;   09/15/17,   Daryl Herrera 
;,;$27.57;,; white;,;   09/15/17   , Miguel Mcguire;,;$5.25;,; white&blue   ;,;   09/15/17 ,   
Rogelio Gonzalez;,; $9.51;,;   white&black&blue   
;,;   09/15/17   ,   Lora Hammond ;,;$20.56 ;,; 
green;,;   09/15/17,Owen Ward;,; $21.64   ;,;   
green&yellow;,;09/15/17,Malcolm Morales ;,;   
$24.99   ;,;   green&yellow&black;,; 09/15/17 ,   
Eric Mcdaniel ;,;$29.70;,; green ;,; 09/15/17 
,Madeline Estrada;,;   $15.52;,;green;,;   09/15/17 
, Leticia Manning;,;$15.70 ;,; green&purple;,; 
09/15/17 ,   Mario Wallace ;,; $12.36 ;,;green ;,; 
09/15/17,Lewis Glover;,;   $13.66   ;,;   
green&white;,;09/15/17,   Gail Phelps   ;,;$30.52   
;,; green&white&blue   ;,; 09/15/17 , Myrtle Morris 
;,;   $22.66   ;,; green&white&blue;,;09/15/17"""

#------------------------------------------------
# Start coding below!
daily_sales_replaced = daily_sales.replace(";,;", "o")
print(daily_sales_replaced)
daily_transactions = daily_sales_replaced.split(',')
print(daily_transactions)
daily_transactions_split = []
for transactions in daily_transactions:
  daily_transactions_split.append(transactions.split("o"))
print(daily_transactions_split)
transactions_clean = []
for white in daily_transactions_split:
  for lower in white:
   transactions_clean.append(lower.strip)


print(transactions_clean)

customers = []
sales = []
thread_sold = []

for transactions in transactions_clean:
  customers.append(transactions[0])
  sales.append(transactions[1])
  thread_sold.append(transactions[2])


I’m having a problem here


customers = []
sales = []
thread_sold = []

for transactions in transactions_clean:
  customers.append(transactions[0])
  sales.append(transactions[1])
  thread_sold.append(transactions[2])
  

It gives this error

Traceback (most recent call last):
File “script.py”, line 131, in
customers.append(transactions[0])
TypeError: ‘builtin_function_or_method’ object is not subscriptable

So, I hope @mtf and others will help out me. waiting to listen from your side

We would use a replacement character that is confirmed not to be in any of the data. "o" must have multiple instances in the data. We know there are no ? or * or !, &c. Using one them would be a safer bet. Give that a try and post back so we can work with the next problem.

hello @mtf it gave the same error listed below

Traceback (most recent call last):
File “script.py”, line 130, in
customers.append(transaction[0])
TypeError: ‘builtin_function_or_method’ object is not subscriptable

I think the problem is in this line

customers.append(transaction[0])

but what’s the problem is I am not getting it subscriptable error it could not understand it.
please check it again

Is that line still there?

Please post your code (sans the data).

yes it is there, whats the problem with this line

daily_sales_replaced = daily_sales.replace(";,;", "*")
print(daily_sales_replaced)
daily_transactions = daily_sales_replaced.split(',')
print(daily_transactions)
daily_transactions_split = []
for transactions in daily_transactions:
  daily_transactions_split.append(transactions.split("*"))
print(daily_transactions_split)
transactions_clean = []
for white in daily_transactions_split:
  for lower in white:
   transactions_clean.append(lower.strip)


print(transactions_clean)

customers = []
sales = []
thread_sold = []
for transaction in transactions_clean:
   customers.append(transaction[0])
   sales.append(transaction[1])
   thread_sold.append(transaction[2])

Should we not be invoking the strip() method?

I could not understand you what should we do

Would make more sense as,

transactions_clean.append(lower.strip())

without that it gives output something like below,

[]
...

We still need to see all your code (without the data).

ok here I’ve listed below my code

:point_down: :point_down:

daily_sales_replaced = daily_sales.replace(";,;", "*")
print(daily_sales_replaced)
daily_transactions = daily_sales_replaced.split(',')
print(daily_transactions)
daily_transactions_split = []
for transactions in daily_transactions:
  daily_transactions_split.append(transactions.split("*"))
print(daily_transactions_split)
transactions_clean = []
for white in daily_transactions_split:
  transaction_clean = []
  for lower in white:
    transactions_clean.append(lower.replace("/n", " "))
    print(transactions_clean)

customers = []
sales = []
thread_sold = []
for transaction in transactions_clean:
   customers.append(transaction[0])
   sales.append(transaction[1])
   thread_sold.append(transaction[2])
   print(customers)
   print(sales)
   print(thread_sold)

Looking back at the data, there is no assignment.

daily_sales = """
 ... 
"""
transactions_clean = []
for white in daily_transactions_split:
  transaction_clean = []
  for lower in white:
    transactions_clean.append(lower.replace("/n", " "))
    print(transactions_clean)

What is the purpose of the transaction_clean list?

I’m running your code on my machine, line by line. My approach was to separate the data from the program code by saving it to data.py. The string assigned to daily_sales is as written above. I also saved the program code to app.py and both files are in the thread_shed directory.

The first line in app.py is,

from data import daily_sales

The string pops into existence and is immediately usable.

I commented out all the code below that line and added this line as line 2…

print (len(daily_sales))
5780

Next I uncommented,

daily_sales_replaced = daily_sales.replace(";,;", "*")
# revised print statement
print (len(daily_sales_replaced))
5180

To this point the numbers are telling enough. We don’t need to print the data. It’s evident that there were 300 replacements, which is in line with our expectations.

We next brought this line back in with a revised print statement…

daily_transactions = daily_sales_replaced.split(',')
print(len(daily_transactions))
100

as expected.

Now we want to split the strings from that list.

daily_transactions_split = []
for transaction in daily_transactions:
  daily_transactions_split.append(transaction.split("*"))

We’ll use three print statements to examine the result.

print(len(daily_transactions_split))
print(len(daily_transactions_split[0]))
print(daily_transactions_split[0]) 
100
4
['Edith Mcbride   ', '$1.21   ', '   white ', ' \n09/15/17   ']

So far the code is behaving as expected. However, now we get to the tricky part… Cleaning the data. We can see above that every string has some extraneous white space and a newline before the date. It was your code in this segment that had the most issues. Compare yours to my revised code…

transactions_clean = []
for record in daily_transactions_split:
  transaction = []
  for field in record:
    transaction.append(field.strip(" \n"))  #.replace("/n", " "))
  transactions_clean.append(transaction)

For this I used two print statements…

print(len(transactions_clean))
print(transactions_clean[0])
100
['Edith Mcbride', '$1.21', 'white', '09/15/17']

Now it looks as expected. I will let you finish up from here.

thanx, you v much @mtf your guide took me on right track. I’m going to fix the problem.

pleasure :star_struck:

1 Like