July 26, 2015 Leave a comment

I made a simple wrapper script called that calls phantomjs and convert to do the real job. The advantage of is its very simple usage.

Usage -full full.jpg

Screenshot of the entire page (can be very high). -window window.jpg

Screenshot of the area that you see in the browser. -thumb thumb.jpg

Thumbnail of the area that you see in the browser.


Flask: linkify a text

July 12, 2015 Leave a comment

I have a text that I present in a Flask application. The text can contain URLs, and I would like to linkify them, i.e. make them clickable links. Example:


visit for...


visit <a href=""></a> for...

Before rolling out an own solution, it’s a good idea to check if there is a package for this problem. There is :), and it’s called bleach. Its usage couldn’t be simpler:

>>> import bleach
>>> bleach.linkify('an url')
u'an <a href="" rel="nofollow"></a> url

Flask integration
In your main file (that calls add the following filter:

import bleach

def linkify(s):
    return bleach.linkify(s)

Then use it in your jinja2 templates:

Description: {{ entry.description|linkify|safe }}

Warning! Apply the “safe” filter only if you trust the origin of the text you want to present in a linkified format.

subtract a day from a python date

July 10, 2015 Leave a comment

When working with dates, I prefer the order yyyy-mm-dd (e.g. 2015-07-10). Its main advantage is that if you use it as a prefix and sort your entries, you get them in chronological order. (Another advantage is that in my home country we use this order, so this is much closer to my thinking).

So, I faced the following problem: having a date as a string (“2015-07-10″), calculate the date one day before and produce a string again (“2015-07-09″).


>>> from datetime import datetime, timedelta
>>> date = "2015-07-10"
>>> today = datetime.strptime(date, '%Y-%m-%d')
>>> today
datetime.datetime(2015, 7, 10, 0, 0)
>>> yesterday = today - timedelta(days=1)
>>> yesterday
datetime.datetime(2015, 7, 9, 0, 0)
>>> yesterday.strftime('%Y-%m-%d')


Back to dates: if I need to write a date in English, I write it like this: “May 12, 1984″. Avoid “05-12-1984″, because what is it? May 12? Or December 5? God knows only.

Categories: python Tags: , , , ,

Python course in Milan, Italy

In the last two days I gave an intensive Python course at the University of Milan, Italy. It was good. As I saw the students liked it too :)


Here is the schedule of the course:

Day 1
- introduction
- string data type
- list data type
- loops (for, while)
- tuple data type
- list comprehension
- control structures
- functions

Day 2
- set
- dictionary
- global variables
- file handling
- classes, objects
- modules
- random numbers
- downloading webpages
- JSON serialization
Categories: python Tags: , , ,

touch a file

In bash, the command “touch” creates an empty file (with size 0). How to do this in Python?

Simply open a file in write mode and write an empty string to it.

With the stdlib:

with open("empty.txt", "w") as f:

With the excellent unipath library:

p = Path("empty.txt")

Note that this solution will overwrite your file if it exists. So be careful.

Categories: python Tags: ,

Simplicity is the final achievement.

Simplicity is the final achievement. After one has played a vast quantity of notes and more notes, it is simplicity that emerges as the crowning reward of art.

Frederic Chopin

Categories: python Tags: , ,

how to become a data scientist in Python

In this post I found a detailed learning path on how to become proficient in data science.

They also made an infographic (see this post).

data_scienceClick to see the full version.

(Here is a backup of the image if the original site went down.)


Get every new post delivered to your Inbox.

Join 94 other followers