语法错误,期待换行

时间:2013-02-02 04:11:07

标签: python python-2.7 pydev

我在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栏遇到“输出”。期待以下之一:
   ......“(”......“[”......“;”......“,”......“。”   ......“+”......“ - ”......“”......“/”......“//”......   “<<” ......“>>” ......“%”......“^”......“|” ......“&” ...   “=”......“>” ......“<” ......“==”......“< =”......“> =”......   “!=”......“+ =”......“ - =”......“ =”...“/ =”...“// =”   ...“%=”...“& =”...“| =”......“^ =”...“<< =”...   “>> =”......“** =”...“或”......“和”......“不是”...“   “是”......“在”......“如果”......“;” ......“,”......

3 个答案:

答案 0 :(得分:5)

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

编辑:我认为没有理由让代码无法正常运行,只要PyDev没有全力以赴 - 如果你不能直接从命令行调用的python.exe运行它,可能实际上是一些我错过的偷偷摸摸的坏语法。

答案 1 :(得分:3)

尝试print作为函数......

print(output)

另外,检查你的Eclipse设置,看看你正在使用哪个python版本......

答案 2 :(得分:2)

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