2013-02-02 33 views
3

我在Eclipse中使用python 2.7.3 PyDev。从porter stemmer source code语法错误,期待换行

if __name__ == '__main__': 
    p = PorterStemmer() 
    if len(sys.argv) > 1: 
     for f in sys.argv[1:]: 
      infile = open(f, 'r') 
      while 1: 
       output = '' 
       word = '' 
       line = infile.readline() 
       if line == '': 
        break 
       for c in line: 
        if c.isalpha(): 
         word += c.lower() 
        else: 
         if word: 
          output += p.stem(word, 0,len(word)-1) 
          word = '' 
         output += c.lower() 
       print output # ---- ERROR 
      infile.close() 

我得到的错误

遭遇 “输出” 的行336,列23期待之一:
...... “(” ... “[” ...“,”...“,”...“。” ...“+”...“ - ”...“”...“/”...“//” ...
“< <”...“>>”...“%”...“^”...“|”...“&”... “=”... “>”...“<“...”==“...”< =“...”> =“... ”!=“...”+ =“...” - =“...”
=“...”/ =“...”// =“ ...”%=“...”& =“...”| =“...”^ =“...” < < =“... ”>> =“...”** =“...”或“...”和“...”不是“...
”是“... “...”如果“...”;“...”,“...”

+0

您的代码是有效的Python 2语法,也许Eclipse使用Python 3语法。尝试从命令行运行脚本。 – martineau

回答

5

检查您正在使用的Python语法版本(无法记忆它是否是全局或每个项目设置)。它看起来像你的语法设置为Py3k,其中print现在是一个函数,而不是一个语句。

编辑:我没有看到没有理由不能正常运行该代码,只要PyDev没有得到它的手 - 如果你不能直接从命令行调用python.exe运行它,可能会实际上是我错过了一些鬼鬼祟祟的坏语法。

+0

谢谢,每个项目的设置是罪魁祸首 – siamii

+0

不客气。无论如何,值得使用'print'的函数语法来养成编写兼容代码的习惯。 –

+0

这是真的,但是当你不得不处理遗留的代码库时... – siamii

2

尝试,print作为函数...

print(output) 

另外,检查你的Eclipse设置,查看您所使用的Python版本...

+0

所以我尝试了这个,现在它工作。在PyDev解释器-Python下的Eclipse中,它被设置为Python27 – siamii

2

所以问题是,PyDev的具有内置 - 它在编辑器中使用的解释器,但它在代码运行时使用外部解释器。尽管我的计算机上只安装了python 2.7.3,并且已由eclipse pydev自动配置,但内置解释器已设置为3.0。此外,内置的解释器设置在PyDev下的选项菜单中不可用,而是隐藏的。当在文件资源管理器中右键单击项目标题并选择属性时,会出现另一个解释器设置。此外,需要关闭所有编辑器窗口并重新打开它们才能使用更新后的设置。

相关问题