我目前正在Windows7中使用komodo edit,但是,我在使用textwrangler的Mac上遇到过这个问题。不管出于什么原因,我得到了一些空白错误,这是一个巨大的问题,当我在python中编写。例如,所有内容似乎都被正确地标记,但是komodo当前给了我一个“含糊不清的空白”错误。

//How it appears in my editor
def SaveList(self, directory):
    templist = []
    templistbox2 = []
    for n,i in enumerate(self.listbox2.get(0,END)):
       templistbox2.insert(n, re.sub(r'^[0-9]*[.]',"",str(i)))
    for filename in sorted(os.listdir(directory)):
        self.templist.insert(i, filename)
        print filename #whitespace error here

考虑到我在windows和mac上使用过两个不同的编辑器,我想知道是否有一些设置我不知道,或者我做错了什么。

最佳答案

当我将您的代码复制到文件test.py并运行

cat -A test.py

我懂了
//How it appears in my editor$
def SaveList(self, directory):$
    templist = []$
    templistbox2 = []$
    for n,i in enumerate(self.listbox2.get(0,END)): $
       templistbox2.insert(n, re.sub(r'^[0-9]*[.]',"",str(i)))$
    for filename in sorted(os.listdir(directory)):$
        self.templist.insert(i, filename)$
^I    print filename #whitespace error here$

它表示在最后一行有一个制表符(用^I表示)后跟四个空格。
我不确定Windows上的等效工具是什么,但是MAC应该有cat -A命令。它将显示制表符和空格的位置。
有一个名为reindent.py的程序可以将制表符转换为空格:
reindent.py test.py

在unix上还有一个unexpand命令,可以将空格转换为制表符。
大多数Python程序员使用空格而不是标签来缩进。在web上找到的大多数python代码将使用空格而不是制表符。
您的编辑器可能正在添加选项卡,但是如果您从web上获取了一段代码,那么您的文件现在可能同时包含选项卡和空格。
这是最容易的流程,并采用空间作为缩进公约,所以你将不必重新格式化他人的代码这么多。
顺便说一下,采用空格作为缩进约定并不意味着必须为每个缩进级别压缩4倍空间。您的编辑器应该有一个配置选项,它使按下选项卡插入4个空格。

07-24 18:35
查看更多