Parsing/Splitting Line

John Machin sjmachin at lexicon.net
Tue Nov 21 20:39:15 CET 2006


Manuel Kaufmann wrote:
> El Martes, 21 de Noviembre de 2006 02:59, acatejr at gmail.com escribió:
> > I have a text file and each line is a list of values.  The values are
> > not delimited, but every four characters is a value.  How do I get
> > python to split this kind of data?  Thanks.
>
> You can define a function very easy to make it. For example you can do:
>
> # split-line in 'n' characters
> import sys
>
> def splitLine(line, n):
>     """split line in 'n' characters"""
>     x = 0
>     y = 0
>     while line >= n:

The intent appears to be that "line" refers to a str object, while "n"
refers to an int object. Comparison of such disparate objects is
guaranteed to produce a reproducible (but not necessarily meaningful)
result.

For example:

| >>> '' > 2
| True

You need to reconsider what you really want to have happen when there
is a trailing short slice. Possibilities are:

(a) silently ignore it -- what I guess your intent was, but the least
attractive IMO
(b) raise an exception -- overkill IMO
(c) just tack it on the end (which is what your code is currently doing
*accidentally*) -- and mention this in the docs and let the caller do
what they want with it.

>     	y = x + n
>         if line[x:y] == '':
>             break
>         yield line[x:y]
>         x += n
>
> if __name__ == '__main__':
>     # i get the line-split from the command line
>     # but you can get it from a file
>     for x in splitLine(sys.argv[1], int(sys.argv[2])):
>         print x
>

HTH,
John




More information about the Python-list mailing list