It should be clear that your code is not IO bound. You are using split(), which creates a seq of substrings for each call. Of course such operation is expensive, as for each call a new seq is allocated, and for each entry in the seq a string is allocated. If performance is really a concern, one may consider avoiding split proc -- maybe there are other procs available in stringutils, or you may invent one.
Have you compiled with -d:release? I assume that Pythons split() is coded internally in C, so we should not assume that Nim's split() is much faster. Maybe Python has some smart internal optimization?