I am working on some code to clean a data file for further processing afterwards.

I am missing a way of seperating values that have no obvious seperation. However I know that the values should be seperated using the following rule:

* seperate/add a space, when there is a negative sign except when the previous letter was an E

I have a very watered down example of the type of text I would use this on:

```
CSYS,   0
NBLOCK,6,SOLID,        15,        15
(3i9,6e21.13e3)
        1        0        0 4.0000000000000E+001-6.0000000000000E+001
        2        0        0 4.0000000000000E+001 6.0000000000000E+001
        3        0        0-4.0000000000000E+001 6.0000000000000E+001

```

Expected output for the nblock dictionary:

```
nblock = [[6.0, 'SOLID', 15.0, 15.0],
          ['(3i9,6e21.13e3)'],
         [[1.0, 0.0, 0.0, 40.0, -60.0],
         [2.0, 0.0, 0.0, 40.0, 60.0],
         [3.0, 0.0, 0.0, -40.0, 60.0]]]

```

I can get that output if I add a space manually between 0-4 and 1-6 but I need a way of doing this automatically.

Here is the current code I use to get the (almost) correct output:

```
class Block:
    def __init__(self):
        self.data = {}
        self.array = []

    def ingest(self, lines):
        for line in lines:

            # if string starts with a new line we skip
            if line[0] == '\n':
                continue

            # if string starts with a letter
            elif 'a' <= line[0] <= 'z' or 'A' <= line[0] <= 'Z':
                parts = [k.strip() for k in line.split(',')] 
                parts = [float(k) if k.isdigit() else k for k in parts]
                key = parts[0].lower()
                if key not in self.data:
                    self.data[key] = [parts[1:]]
                else:
                    self.data[key].append( parts[1:] )

            # if string first letter is any of the following we skip iterating 
            elif line[0] == '\t' or line[0] == '/' or line[0] == '*' or line[0] == '_' or line[0] == '!':
                continue

            elif line[0] == '(':
                self.data[key].append( [line.strip()] )
                self.data[key].append( [] )
            else:
                parts = line.split()
                if parts[0] != '-1':
                    self.data[key][-1].append( [float(k) for k in parts[:]] )

blk = Block() 
blk.ingest( open(input_file) ) 
my_data = blk.data

```