@@ -1150,7 +1150,11 @@ def TextParser(*args, **kwds):
1150
1150
returns Series if only one column
1151
1151
"""
1152
1152
kwds ['engine' ] = 'python'
1153
- return TextFileReader (* args , ** kwds )
1153
+
1154
+ res = TextFileReader (* args , ** kwds )
1155
+
1156
+
1157
+ return res
1154
1158
1155
1159
# delimiter=None, dialect=None, names=None, header=0,
1156
1160
# index_col=None,
@@ -1385,6 +1389,7 @@ def _convert_data(self, data):
1385
1389
clean_conv )
1386
1390
1387
1391
def _infer_columns (self ):
1392
+ #TODO: this full part is too complex and somewhat strage!!!
1388
1393
names = self .names
1389
1394
1390
1395
if self .header is not None :
@@ -1396,13 +1401,20 @@ def _infer_columns(self):
1396
1401
header = list (header ) + [header [- 1 ]+ 1 ]
1397
1402
else :
1398
1403
have_mi_columns = False
1404
+ #TODO: explain why header (in this case 1 number) needs to be a list???
1399
1405
header = [ header ]
1400
1406
1401
1407
columns = []
1402
1408
for level , hr in enumerate (header ):
1403
-
1409
+ #TODO: explain why self.buf is needed.
1410
+ # the header is correctly retrieved in excel.py by
1411
+ # data[header] = _trim_excel_header(data[header])
1404
1412
if len (self .buf ) > 0 :
1405
1413
line = self .buf [0 ]
1414
+
1415
+ elif (header [0 ] == hr ) and (level == 0 ) and (header [0 ] > 0 ):
1416
+ line = self ._get_header ()
1417
+
1406
1418
else :
1407
1419
line = self ._next_line ()
1408
1420
@@ -1456,8 +1468,24 @@ def _infer_columns(self):
1456
1468
columns = [ names ]
1457
1469
1458
1470
return columns
1471
+
1472
+ def _get_header (self ):
1473
+ ''' reads header if e.g. header
1474
+ FIXME: this tshoul be turned into something much less complicates
1475
+ FIXME: all due to the header assuming that there is never a row between
1476
+ data and header
1477
+ '''
1478
+ if isinstance (self .data , list ):
1479
+ line = self .data [self .header ]
1480
+ self .pos = self .header + 1
1481
+ else :
1482
+ line = self ._next_line ()
1483
+
1484
+ return line
1459
1485
1460
1486
def _next_line (self ):
1487
+ #FIXME: why is self.data at times a list and sometimes a _scv.reader??
1488
+ # reduce complexity here!!!
1461
1489
if isinstance (self .data , list ):
1462
1490
while self .pos in self .skiprows :
1463
1491
self .pos += 1
0 commit comments