avatar Bite 164. CLI tool: HTML link converter (stdin to stdout)

In this Bite you are going to help your team out automating a boring task.

They reached out to you with some data files that contain lines of (link_href, link_name). Unfortunately they also contain bad data.

The additional requirement is that your script can receive piped output from another process (read on ...)

Code up make_html_links that reads in data from stdin (use sys) and converts it to proper HTML:

  • Ignore the bad lines (no http in line, more than one comma, etc),
  • Strip white spaces around link_href and link_name,
  • Final twist: if the domain is NOT pybit.es or codechalleng.es make it an external link by adding target="_blank" to the resulting HTML.
  • Make the function print to standard output, don't return anything. The tests run your code as below and hence check standard output!

Running your program, which is automatically saved in a module called links.py, it should work like this:

$ cat data1
https://www.python.org, Python Homepage
bad data,blabla,123
https://pybit.es/generators.html , Generators are Awesome
more bad data

$ cat data1|python links.py
<a href="https://www.python.org" target="_blank">Python Homepage</a>
<a href="https://pybit.es/generators.html">Generators are Awesome</a>

$ cat data2
bogus data, again
https://codechalleng.es/bites/ , Bites of Py
https://stackoverflow.com/a/12927564,How to capture subprocess.call stdout
https://pybit.es/,Our labor of love
https://pybit.es/pages/about.html, About Us
https://nu.nl, Dutch news site

$ cat data2|python links.py
<a href="https://codechalleng.es/bites/">Bites of Py</a>
<a href="https://stackoverflow.com/a/12927564" target="_blank">How to capture subprocess.call stdout</a>
<a href="https://pybit.es/">Our labor of love</a>
<a href="https://pybit.es/pages/about.html">About Us</a>
<a href="https://nu.nl" target="_blank">Dutch news site</a>

Pretty cool/useful, no? Make your team happy and increase your coding ninja reputation in your org ;) - have fun and keep calm and code in Python!

Login and get coding
go back Advanced level
Bitecoin 4X

Will you be the 72nd person to crack this Bite?
Resolution time: ~48 min. (avg. submissions of 5-240 min.)
Our community rates this Bite 4.2 on a 1-10 difficulty scale.
» Up for a challenge? 💪

Focus on this Bite hiding sidebars, turn on Focus Mode.

Ask for Help