こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

楽天RSSからpythonでデータ取り込み

楽天RSS(RealtimeSpreadSheet)から表計算ソフトを介さずに直接価格データなどを取り込む、ということに
http://mrdriller.blogspot.jp/2015/01/blog-post.html
を参考に取り組もうとしています。

win32ui は
Python のバージョンが 3.4.4 でしたので
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/pywin32-220.win32-py3.4.exe/download
たしかこれをインストールしました。

まず、先ほどのブログのコードをそのまま貼り付けて
コマンドプロンプトで実行させると

>python RSS1.py
File "RSS1.py", line 23
print get_price('N225.FUT01.OS')
^
SyntaxError: invalid syntax

というエラーが出ましたので、
次は時間を測る部分を省略し、読み込むデータも
ask, ask_sz, bit, bit_sz
の内
ask
だけにして、一行づつ入力してみました。

>python
Python 3.4.4 (v3.4.4:737efcadf5a6, Dec 20 2015, 19:28:18) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import win32ui
>>> import dde
>>> s = dde.CreateServer()
>>> s.Create('RSS')
>>> c = dde.CreateConversation(s)
>>> def get_price(code):
... c.ConnectTo('RSS', code)
... ask = c.Request(u'最良買気配値1')
... return (ask)
...
>>> print get_price('N225.FUT01.OS')
File "<stdin>", line 1
print get_price('N225.FUT01.OS')
^
SyntaxError: invalid syntax
>>>

楽天RSSから表計算ソフトへ
=DDE("RSS","N225.FUT01.OS","最良買気配値1")
などとセルに入力してのデータ読み込みはうまくいっている状態です。
'最良買気配値1'
'N225.FUT01.OS'
などを
"最良買気配値1"
"N225.FUT01.OS"
と変えて実行してみても、上記の二つの方法どちらにおいても結果は変わりませんでした。
get_price

getprice
と変えても同じことでした。
どこを修正すべきでしょうか?
どうぞよろしくお願いします。

投稿日時 - 2016-01-28 11:16:20

QNo.9118327

困ってます

質問者が選んだベストアンサー

Pythonのバージョン違いによるエラーかと思います。
>Python 2 では括弧が追加されても問題ありませんが、
>Python 3 では対称的に Python 2 のやり方で括弧のないprint関数は SyntaxError になります。

blogのプログラムは恐らく2.7系のPythonで記述&実行されたのではないでしょうか?
2.7系のpythonをWindowsにインストールし直す or プログラムを3系用に修正が必要みたいですね。

参考URL:http://postd.cc/the-key-differences-between-python-2-7-x-and-python-3-x-with-examples/

投稿日時 - 2016-01-28 15:24:14

補足

楽天RSSから表計算ソフトへのデータ読み込みはやはりちゃんとうまくいっている状態ですが、
次のようなエラーが出ています。
dde のことを少し調べてみます。

>python RSS4.py
Traceback (most recent call last):
File "RSS4.py", line 14, in <module>
print(get_price('N225.FUT01.OS'))
File "RSS4.py", line 12, in get_price
ask = c.Request('現在値')
dde.error: Request failed

>type RSS4.py
#!c:/Python34/python.exe
# -*- coding: shift-jis -*-
import os, sys
import codecs
import win32ui
import dde
s = dde.CreateServer()
s.Create('RSS')
c = dde.CreateConversation(s)
def get_price(code):
c.ConnectTo('RSS', code)
ask = c.Request('現在値')
return (ask)
print(get_price('N225.FUT01.OS'))

投稿日時 - 2016-01-29 11:34:05

お礼

ありがとうございます。
print文を()で囲むよう修正したのですが、やはり別のエラーが出てしまいます。

>python RSS2.py
File "RSS2.py", line 9
SyntaxError: Non-UTF-8 code starting with '¥x8c' in file RSS2.py on line 9, but
no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
(下記の追加を行う前の状態において)

UTF-8 が何たらと出ているので
#!c:/Python34/python.exe
import codecs
を追加しましたがまだうまくいきません。

>python RSS2.py
File "RSS2.py", line 11
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0x8c in position 0:
invalid start byte

>type RSS2.py
#!c:/Python34/python.exe
# -*- coding: utf-8 -*-
import codecs
import win32ui
import dde
s = dde.CreateServer()
s.Create('RSS')
c = dde.CreateConversation(s)
def get_price(code):
c.ConnectTo('RSS', code)
ask = c.Request(u'現在値')
return (ask)
print(get_price('N225.FUT01.OS'))

自分でもネット上の資料の解読を試みてみますが、
何かお分かりになることはどうぞご教示下さい。

投稿日時 - 2016-01-29 00:47:24

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)