@@ -1548,26 +1548,6 @@ def test_int64_min_issues(self):
1548
1548
1549
1549
tm .assert_frame_equal (result , expected )
1550
1550
1551
- def test_parse_ragged_csv (self ):
1552
- data = """1,2,3
1553
- 1,2,3,4
1554
- 1,2,3,4,5
1555
- 1,2
1556
- 1,2,3,4"""
1557
-
1558
- nice_data = """1,2,3,,
1559
- 1,2,3,4,
1560
- 1,2,3,4,5
1561
- 1,2,,,
1562
- 1,2,3,4,"""
1563
- result = self .read_csv (StringIO (data ), header = None ,
1564
- names = ['a' , 'b' , 'c' , 'd' , 'e' ])
1565
-
1566
- expected = self .read_csv (StringIO (nice_data ), header = None ,
1567
- names = ['a' , 'b' , 'c' , 'd' , 'e' ])
1568
-
1569
- tm .assert_frame_equal (result , expected )
1570
-
1571
1551
1572
1552
class TestPythonParser (ParserTests , unittest .TestCase ):
1573
1553
@@ -2078,6 +2058,36 @@ def test_na_trailing_columns(self):
2078
2058
self .assertEquals (result ['Date' ][1 ], '2012-05-12' )
2079
2059
self .assertTrue (result ['UnitPrice' ].isnull ().all ())
2080
2060
2061
+ def test_parse_ragged_csv (self ):
2062
+ data = """1,2,3
2063
+ 1,2,3,4
2064
+ 1,2,3,4,5
2065
+ 1,2
2066
+ 1,2,3,4"""
2067
+
2068
+ nice_data = """1,2,3,,
2069
+ 1,2,3,4,
2070
+ 1,2,3,4,5
2071
+ 1,2,,,
2072
+ 1,2,3,4,"""
2073
+ result = self .read_csv (StringIO (data ), header = None ,
2074
+ names = ['a' , 'b' , 'c' , 'd' , 'e' ])
2075
+
2076
+ expected = self .read_csv (StringIO (nice_data ), header = None ,
2077
+ names = ['a' , 'b' , 'c' , 'd' , 'e' ])
2078
+
2079
+ tm .assert_frame_equal (result , expected )
2080
+
2081
+ # too many columns, cause segfault if not careful
2082
+ data = "1,2\n 3,4,5"
2083
+
2084
+ result = self .read_csv (StringIO (data ), header = None ,
2085
+ names = range (50 ))
2086
+ expected = self .read_csv (StringIO (data ), header = None ,
2087
+ names = range (3 )).reindex (columns = range (50 ))
2088
+
2089
+ tm .assert_frame_equal (result , expected )
2090
+
2081
2091
2082
2092
class TestParseSQL (unittest .TestCase ):
2083
2093
0 commit comments