解析雅虎财经返回的 CSV 数据 API

Parsing the CSV data returned by Yahoo Finance API

我想解析 Yahoo Finance API 返回的 CSV 格式的数据。我想要 company name: stock price 格式的输出。我已经下载了 Yahoo API 例子,代码如下:

String[] symbols = new String[] {"INTC", "BABA", "TSLA", "AIR.PA", "YHOO"};
Map<String, Stock> stocks = YahooFinance.get(symbols); 

输出:

INFO: Parsing CSV line: N/A,\"INTC\",\"USD\",N/A,N/A,N/A,\"INTC\",100,\"INTC\",N/A,N/A,\"INTC\",500,\"INTC\",32.35,\"INTC\",N/A,\"INTC\",\"4/23/2015\",\"4:00pm\",N/A,N/A,N/A,N/A,N/A,32348700,N/A,N/A,31.61,34.01,\"INTC\",4736000000,\"INTC\",\"INTC\",N/A,\"INTC\",153.21B,\"INTC\",4730885000,\"INTC\",\"6/1/2015\",N/A,N/A,N/A,N/A,2.16,0.59,2.40,N/A,1.82,2.78,2.77,11.77,55.87B,24.19B,34.95 Apr 24, 2015 6:14:56 PM yahoofinance.quotes.QuotesRequest getResult

我只想要那家公司的价格

尝试这样的事情

import csv
import StringIO

raw_file = StringIO.StringIO("data1, data2, data3, ...")
reader = csv.reader(raw_file)
for FIELD1, FIELD2,FIELD3,FIELD4 in reader:
   print FIELD2

您显示的输出是 API 的日志记录。

您的 stocks 变量中提供了所有请求的 Stock 对象。如果你想打印每一个的价格,你应该这样做:

String[] symbols = new String[] {"INTC", "BABA", "TSLA", "AIR.PA", "YHOO"};
Map<String, Stock> stocks = YahooFinance.get(symbols); 

for(Stock s : stocks.values()) {
    System.out.println(s.getName() + ": " + s.getQuote().getPrice());
}

查看 javadoc 以查看 API 中可用的对象和方法。