Skip to content

Commit b8f248d

Browse files
committed
bug: fixed reading when the tabular has too many delimiters
Also added more tests for this. Signed-off-by: Nick Papior <nickpapior@gmail.com>
1 parent d601f0e commit b8f248d

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

sisl/io/table.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ def read_data(self, *args, **kwargs):
183183
dat[-1] = ensure_array(dat[-1], np.float64)
184184
dat.append([])
185185
else:
186-
dat[-1].append(ensure_array(map(float, line.split(sep)), np.float64))
186+
line = [l for l in line.split(sep) if len(l) > 0]
187+
dat[-1].append(ensure_array(map(float, line), np.float64))
187188

188189
line = self.readline()
189190
dat[-1] = ensure_array(dat[-1], np.float64)

sisl/io/tests/test_table.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,19 @@ def test_tbl4(self):
9090
assert np.allclose(dat, DAT)
9191

9292
os.remove(io.file)
93+
94+
@pytest.mark.parametrize("delimiter", ['\t', ' ', ',', ':', 'M'])
95+
def test_tbl5(self, delimiter):
96+
dat0 = np.arange(8)
97+
dat1 = np.arange(8) + 1
98+
DAT = np.stack([dat0, dat1])
99+
100+
io = TableSile(join(_C.d, 't0.dat'), 'w')
101+
io.write_data(dat0, dat1, delimiter=delimiter)
102+
if delimiter in ['\t', ' ', ',']:
103+
dat = TableSile(io.file, 'r').read_data()
104+
assert np.allclose(dat, DAT)
105+
dat = TableSile(io.file, 'r').read_data(delimiter=delimiter)
106+
assert np.allclose(dat, DAT)
107+
108+
os.remove(io.file)

0 commit comments

Comments
 (0)