2015-08-13 52 views
0

我很新的蟒蛇和編程一般。我目前正在編寫一個腳本來從Google財經中刪除股票報價。這裏是我的代碼:谷歌財經刮刀返回

import urllib.request as ur 
import re 

def getquote(symbol): 
    base_url = 'http://finance.google.com/finance?q=' 
    content = ur.urlopen(base_url + symbol).read() 
    m = re.search(b'id="ref_(.*?)">(.*?)<', content) 
    if m: 
     quote = m.group(2) 
    else: 
     quote = 'no quote available for: ' + symbol 
    return quote 

返回:

b'655.65' 

(655.65是當前價格谷歌股票的這是我通過在符號)

我的問題是:有沒有辦法爲我擦洗任何回報,所以我只是得到了有價無b或報價?理想情況下,我想有它返回爲float,但如果需要的話我可以把它作爲字符串返回,並將其轉換爲當我需要後來的浮動。

我引用這些其他職位:

How to create a stock quote fetching app in python

Python TypeError on regex

How to convert between bytes and strings in Python 3?

Convert bytes to a Python string

也許我錯過了一些東西在其中的一個,但我相信我我試過了我能找到的所有東西,但它仍然是ret採用上面顯示的格式。

解決 我有沒有引號沒有顯示字符串的問題,這是我必須設置爲字面了需要首先被轉換爲一個字符串,然後到浮子的一個字節的值。我曾經試過,但我想這if語句(小白移動)之外。將溶液作爲v1k45建議: 在添加一行if語句 報價=浮子(quote.decode(「UTF-8」)) 將其解碼並轉換爲浮動。

感謝您的幫助!

+2

[Python return without''「]可能重複(http://stackoverflow.com/questions/1482649/python-return-without) –

回答

1

if條件添加一行:

 quote = float(quote.decode('utf-8')) 

你必須字節爲Unicode解碼返回一個正確的琴絃。使用float()將其轉換爲浮點數。

+0

照顧它!謝謝! 我知道如何轉換爲浮點數,並且我嘗試瞭解碼,但是我在if語句之外進行了操作,現在對於它爲什麼不起作用是有道理的。 –

+0

這就是爲什麼我更喜歡2.7以上3做骯髒的工作:d – v1k45