2013-11-23 241 views
0

在shell中,當我嘗試導入我的程序時,出現以下響應。Python語法錯誤無效

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "tweet.py", line 26 
     print "Favorited: %s" % (result['text']) 
          ^
SyntaxError: invalid syntax 

爲什麼print "Favorited: %s" % (result['text'])會返回錯誤?谷歌搜索已於事無補,這一點我們已經爲我工作...

更新,我運行的Python的版本如下:再次

Python 2.7.5 |Anaconda 1.6.1 (x86_64)| (default, Jun 28 2013, 22:20:13) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 

更新,這裏是功能:

def fetch_tweet(tweet): 
    try: 
     result = t.favorites.create(_id=tweet['id']) 
     print "Favorited: %s" % (result['text']) 
     return result 
    # when you have already favourited a tweet, this error is thrown 
    except TwitterHTTPError as e: 
     print "Error: ", e 
     return None 

更新#3 - 發現錯誤!

原來我的Python解釋實在很討厭一些代碼我在上面,這與print某種程度上搞亂 - 我從文件的頂部刪除from __future__ import print_function,一切都開始工作順利進行。

+1

什麼Python版本您使用的? – BrenBarn

+0

更新以上信息... – gersande

+1

它可能只是一個縮進問題。儘量減少到最簡單的程序,重現問題,並重新發布整個代碼。我相信你會得到有用的答案。 –

回答

2

我看看你得到了它的工作,但這裏的解釋:

Python 3的改變印刷是如何工作的各種原因。最大的變化是print現在是a function而不是語句(這是有幫助的,因爲如果你想改變它打印到的位置,是否以換行符結束等,它允許你傳遞參數給它)

所以,當你有行:

from __future__ import print_function 

它是使用Python 3印刷,但你在Python運行2.一種解決方案(如你發現)是去除進口,但你可以還將print語句更改爲函數。對於簡單的語句是這樣,你只需要添加括號,所以這會工作:

print("Favorited: %s" % (result['text'])) 

這也將工作:

print("Favorited: {}".format(result['text'])) 

print("Favorited:", result['text']) 
+0

你太棒了!謝謝! – gersande