Easier way to do this?

breamoreboy at gmail.com breamoreboy at gmail.com
Wed Oct 4 15:47:14 EDT 2017


On Wednesday, October 4, 2017 at 8:29:26 PM UTC+1, 20/20 Lab wrote:
> Looking for advice for what looks to me like clumsy code.
> 
> I have a large csv (effectively garbage) dump.  I have to pull out sales 
> information per employee and count them by price range. I've got my code 
> working, but I'm thinking there must be a more refined way of doing this.
> 
> ---snippet of what I have---
> 
> EMP1 = [0,0]
> EMP2 = [0,0]
> EMP3 = [0,0]
> 
> for line in (inputfile):
>      content = line.split(",")
>      if content[18] == "EMP1":
>          if float(content[24]) < 99.75:
>              EMP1[0] += 1
>          elif float(content[24]) > 99.74:
>              EMP1[1] += 1
>      if content[18] == "EMP2":
>          if float(content[24]) < 99.75:
>              EMP2[0] += 1
>          elif float(content[24]) > 99.74:
>              EMP2[1] += 1
>      if content[18] == "EMP3":
>          if float(content[24]) < 99.75:
>              EMP3[0] += 1
>          elif float(content[24]) > 99.74:
>              EMP3[1] += 1
> 
> and repeat if statements for the rest of 25+ employees.  I can make a 
> list of the employees, but I'd prefer to pull them from the csv, as our 
> turnover is rather high (however this is not important).  I'm thinking 
> another "for employee in content[18]" should be there, but when I tried, 
> my numbers were incorrect.
> 
> Any help / advice is appreciated,
> 
> Matt

Use the csv module https://docs.python.org/3/library/csv.html to read the file with a Counter https://docs.python.org/3/library/collections.html#collections.Counter.  I'm sorry but I'm too knackered to try writing the code for you :-(

--
Kindest regards.

Mark Lawrence.



More information about the Python-list mailing list