creating a csv from information I have printed to screen

Peter Otten __peter__ at web.de
Fri May 22 08:19:05 EDT 2020


Ciarán Hudson wrote:

> This has helped a lot; cleaner output, keeping tbl format and creating a
> csv but the csv is not being populated. Any idea what I am doing wrong?

> writer = csv.writer(sys.stdout)
> writer.writerow([
>     'Arriving From'
>     'Airline',
>     'Scheduled to arrive', 'Latest Update', 'Status'
>     ])
> 
> #cells = soup.find_all('td')
> #print(cells)
> 
> [table] = soup.find_all("table")
> for row in table.find_all("tr"):
>     writer.writerow(
>         [td.string.strip() for td in row.find_all("td")]
>     )
> 
> 
> # for cell in cells:
> 
> #     for content in cell.contents:
> #         value = str(content).strip().replace('\n', '')
> #         if len(value) == 0:
> #             print('"0"', end=',')
> #         elif value[0].lower() in 'abcdefghijklmnopqrstuvwxyz<':
> #             print('\n' + value, end=',')
> #         else:
> #             print('"' + value + '"', end=',')
>             
>             
>             
>             
> with open('flight.csv','w') as f:
>     writer = csv.writer(f)

Well you open the file and create a writer but you don't write anything. You 
need this part

      [table] = soup.find_all("table")
      for row in table.find_all("tr"):
          writer.writerow(
              [td.string.strip() for td in row.find_all("td")]
          )

inside the with-suite, too. 

If you are interested in learning Python, you may put it into a function and 
invoke it twice, with the writer writing to stdout and the writer writing to 
the file.




More information about the Python-list mailing list