python的空白问题

python的空白问题,python,whitespace,komodo,Python,Whitespace,Komodo,我目前正在Windows 7中使用Komodo Edit,但是,我在Mac上使用TextWrangler时遇到了这个问题。无论出于什么原因,我都会遇到一些空白错误,这在我用Python编写时是一个很大的问题。例如,所有内容看起来都是正确的标签,但Komodo目前给了我一个“不明确的空白”错误 考虑到我在windows和Mac上使用过两种不同的编辑器,我想知道是否有一些设置我不知道,或者我是否做错了什么。当我将代码复制到一个文件中时,test.py并运行 cat -A test.py 我明白了

我目前正在Windows 7中使用Komodo Edit,但是,我在Mac上使用TextWrangler时遇到了这个问题。无论出于什么原因,我都会遇到一些空白错误,这在我用Python编写时是一个很大的问题。例如,所有内容看起来都是正确的标签,但Komodo目前给了我一个“不明确的空白”错误


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

当我将代码复制到一个文件中时,test.py并运行

cat -A test.py
我明白了

这表示在最后一行有一个选项卡(由
^I
表示),后跟四个空格

我不确定Windows上的等效工具是什么,但Mac应该有
cat-A
命令。它将显示选项卡与空格的位置


有一个名为的程序,可将选项卡转换为空格:

reindent.py test.py
在Unix上还有一个将空格转换为制表符的命令


大多数Python程序员使用空格而不是制表符进行缩进。您在web上找到的大多数Python代码将使用空格而不是制表符

您的编辑器可能正在添加选项卡,但如果您从web获取一段代码,您的文件现在可能同时包含选项卡和空格

按照流程使用空格作为缩进约定是最容易的,因此您不必太多地重新格式化其他人的代码


顺便说一下,采用空格作为缩进约定并不意味着每个缩进级别必须按空格4次。您的编辑器应该有一个配置选项,使按TAB键插入4个空格。

这是Python中的一个常见问题。以下建议可能对您有所帮助:

1) 不要将空格和制表符混在一起。对于新项目,请使用空格而不是制表符。我的建议是使用4个空格

2) 更改Komodo中tabs length的默认值,以便更容易地检测混合。按
编辑>首选项
菜单,然后在
编辑器设置中

  • 取消选中,
    首选制表符而不是空格
  • 使用4表示缩进的空格数
  • 为每个制表符的
    宽度使用不同的值(例如8)
3)
C:\Python2x\Tools\Scripts\
中的
reindent.py
脚本可以帮助您正确地重新插入文件

-d (--dryrun)   Dry run.   Analyze, but don't make any changes to, files.
-r (--recurse)  Recurse.   Search for all .py files in subdirectories too.
-n (--nobackup) No backup. Does not make a ".bak" file before reindenting.
-v (--verbose)  Verbose.   Print informative msgs; else no output.
-h (--help)     Help.      Print this usage information and exit.

Change Python (.py) files to use 4-space indents and no hard tab characters.
Also trim excess spaces and tabs from ends of lines, and remove empty lines
at the end of files.  Also ensure the last line ends with a newline.

我希望它能有所帮助

因为没有其他人提到它,所以有一种简单的方法可以让空白在Komodo内部可见。您不需要使用任何外部工具

只需从菜单中选择“查看/查看空白”,或在Windows上使用键盘快捷键Ctrl+Shift+8。重复此操作以将其关闭


当您在“视图”菜单上时,请查看其他一些有用的功能。我发现缩进指南特别有用,并一直打开它们。查看下线标记有时也很有用。

缩进中是否有制表符?也许你想要的设置是将标签转换为空格。+1很明显,标签必须与空格混合,但是向OP展示如何找到它们是一个很好的奖励!谢谢你的帮助,我试试看。编辑-这很奇怪。我去掉了出错的标签,按了4次空格,它就消失了。所以,tab导致了一个错误,但4个空格没有。我很困惑,它们不应该是完全相同的间距吗?@user1104854:它们在编辑器上看起来是一样的,一个选项卡的格式与4个空格的格式相同,但并非所有编辑器都是相同的。Python不假设制表符和空格之间存在任何关系,因此它不知道缩进级别1制表符和4空格的含义。在Python中,规则是绝不混合缩进的制表符和空格。
reindent.py test.py
-d (--dryrun)   Dry run.   Analyze, but don't make any changes to, files.
-r (--recurse)  Recurse.   Search for all .py files in subdirectories too.
-n (--nobackup) No backup. Does not make a ".bak" file before reindenting.
-v (--verbose)  Verbose.   Print informative msgs; else no output.
-h (--help)     Help.      Print this usage information and exit.

Change Python (.py) files to use 4-space indents and no hard tab characters.
Also trim excess spaces and tabs from ends of lines, and remove empty lines
at the end of files.  Also ensure the last line ends with a newline.