diff --git a/pandas_datareader/tests/test_data.py b/pandas_datareader/tests/test_data.py index 9345adef..8eb753ba 100644 --- a/pandas_datareader/tests/test_data.py +++ b/pandas_datareader/tests/test_data.py @@ -171,6 +171,12 @@ def test_get_quote_stringlist(self): df = web.get_quote_yahoo(['GOOG', 'AAPL', 'GOOG']) assert_series_equal(df.ix[0], df.ix[2]) + def test_get_quote_comma_name(self): + _yahoo_codes.update({'name': 'n'}) + df = web.get_quote_yahoo(['RGLD']) + del _yahoo_codes['name'] + self.assertEqual(df['name'][0], 'Royal Gold, Inc.') + def test_get_components_dow_jones(self): # pragma: no cover raise nose.SkipTest('unreliable test, receive partial components back for dow_jones') diff --git a/pandas_datareader/yahoo/quotes.py b/pandas_datareader/yahoo/quotes.py index 52ed2d6c..a4f014de 100644 --- a/pandas_datareader/yahoo/quotes.py +++ b/pandas_datareader/yahoo/quotes.py @@ -1,4 +1,6 @@ from collections import defaultdict +import csv + import pandas.compat as compat from pandas.io.common import urlopen from pandas import DataFrame @@ -37,9 +39,12 @@ def _get_data(symbols): with urlopen(url) as response: lines = response.readlines() - for line in lines: - fields = line.decode('utf-8').strip().split(',') - for i, field in enumerate(fields): + def line_gen(lines): + for line in lines: + yield line.decode('utf-8').strip() + + for line in csv.reader(line_gen(lines)): + for i, field in enumerate(line): if field[-2:] == '%"': v = float(field.strip('"%')) elif field[0] == '"':