“缩进中制表符和空格使用不一致”;

我试图在Python 3.2中创建一个应用程序,我一直使用制表符进行缩进,但即使是编辑器也将其中一些制表符更改为空格,然后打印出“缩进中制表符和空格的不一致使用”;当我试图运行程序时。

如何将空格改为制表符?快把我逼疯了。

import random


attraktioner = ["frittfall","bergodalbana","spökhuset"]




class Nojesfalt:
def __init__(self, attraktion):
self.val = attraktion
self.langd = 0
self.alder = 0




#längdgräns för fritt fall
def langdgrans(self):
print("")
self.langd = int(input("Hur lång är du i cm? "))
if self.langd < 140:
print("tyvärr, du är för kort, prova något annat")
return 0
elif self.langd >= 140:
print("håll dig hatten, nu åker vi!")
print(" ")
return 1


#åldersgräns för spökhuset
def aldersgrans(self):
print("")
self.alder = int(input("Hur gammal är du? "))
if self.alder < 10:
print("tyvärr, du är för ung, prova något annat")
return 0
elif self.alder >= 10:
print("Gå in om du törs!")
print(" ")
return 1




#åker attraktion frittfall lr bergodalbana
def aka(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("åkturen gick åt skogen, bättre lycka nästa gång")
elif tal >= 20:
print("jabbadabbbadoooooooo")
return 1


#går i spökhuset
def aka1(self):
print("")
print(self.val)
tal = random.randint(0,100)
if tal < 20:
print("du är omringad av spöken och kan inte fortsätta")            return 0
elif tal >= 20:
print("Buhuuuuuu, buuuhuuuu")
return 1


#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")


while 1:
vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
if vald_attr == "1":
val = Nojesfalt(attraktioner[0])
if val.langdgrans() == 1:
val.aka()
elif vald_attr == "2":
val = Nojesfalt(attraktioner[1])
val.aka()
elif vald_attr == "3":
val = Nojesfalt(attraktioner[2])
if val.aldersgrans() == 1:
val.aka1()
elif vald_attr == "4":
break
1445764 次浏览

一般来说,人们更喜欢用空格缩进。它在编辑器之间更加一致,从而减少了这种类型的不匹配。但是,您可以使用制表符缩进。这是你的选择;但是,您应该意识到每个制表符8个空格的标准有点宽。

关于你的问题,很可能是你的编辑搞砸了。将制表符转换为空格实际上依赖于编辑器。

例如,在Emacs上,您可以调用方法“untabify”。

在命令行中,您可以使用sed行(根据您的喜好调整空格的数量):

   sed -e 's;\t;       ;' < yourFile.py > yourNedFile.py

不要使用标签。

  1. 将编辑器设置为使用4 空间进行缩进。
  2. 进行搜索和替换,将所有制表符替换为4个空格。
  3. 确保你的编辑器设置为显示制表符为8个空格。

注意:制表符使用8个空格的原因是,当无意中插入制表符时,您可以立即注意到-例如从使用制表符而不是空格的示例代码中复制和粘贴时。

您的问题是由于您的编辑器限制/配置。一些编辑器通过以下方式为您提供工具来帮助解决问题:

  1. 将制表符转换为空格

    例如,如果你正在使用Stani的Python编辑器,你可以配置它在保存时执行

  2. 将空格转换为制表符

如果你正在使用ActiveState Komodo,你有一个工具来“tabify”你的代码。正如其他人已经指出的那样,这不是一个好主意。

Eclipse的Pydev提供了“将制表符转换为空格制表符”和“将空格制表符转换为制表符”函数。

我最近遇到了同样的问题,并发现我只需要将.py文件的字符集转换为utf - 8,因为这是Python 3使用的字符集。

顺便说一句,我一直使用4个空格制表符,所以问题不是由它们引起的。

如果你正在使用崇高的文本进行Python开发,你可以通过使用Anaconda包来避免这个错误。安装Anaconda后,在Sublime Text中打开你的文件,右键单击开放空间→选择水蟒→单击自动格式化。完成。或按Ctrl + Alt + R

闲置编辑器中,你可以这样使用:

  • 菜单编辑选择所有
  • 菜单格式Untabify地区
  • 假设编辑器用制表符替换了8个空格,在输入框中输入8。
  • 点击选择,它会修复整个文档。

我使用notepad++得到了这个错误。

在notepad++中,你会看到制表符和四个空格都是相同的,但当你将代码复制到Python 闲置时,你会看到区别,带制表符的行比其他行前面有更多的空格。

为了解决这个问题,我只是删除了行前的制表符,然后添加了四个空格。

我也犯了同样的错误。我必须向现有的*.py文件中添加几行代码。在notepad++中,它不起作用。

在添加代码行并保存后,我得到了相同的错误。当我在PyCharm中打开相同的文件并添加行时,错误消失了。

当同样的错误弹出时,我所做的是:选择所有内容(Str + 一个),并按转变 + 选项卡。所以不再有缩进了。现在回到你想要缩进的行,把它放回你想要的位置。

这对我很管用……

我得到了同样的错误,但不知道我做错了什么。

所以我通过在我的代码上运行自动缩进来修复它,并允许机器修复我的错误。

如果有人想知道我是怎么做到的。 简单。 进入vim。 输入G=gg。< / p >

这将自动修复所有问题。祝你好运。

有时候,tab会在缩进时出错。一种方法显然是使用tabbackspace来正确地缩进代码。

另一种方法是使用space 4倍(取决于你想缩进多少)。

当其他方法都无效时,一种奇怪的方法适用于我,无论我得到哪一行错误,我backspaced这一行到前一行,然后按enter。它自动缩进行到正确的位置,我没有得到任何错误之后。

希望这能有所帮助。

崇高的文本3

在Sublime Text中, 编辑是一个Python文件:

__abc0 > __abc1 > __abc2:

Python.sublime-settings

{
"tab_size": 4,
"translate_tabs_to_spaces": true
}

使用下面的autopep8命令为我修复了它:

 autopep8 -i my_file.py

autopep8 这里有关。文档

如果你的编辑器在进行搜索和替换时不识别制表符(如SciTE),你可以将代码粘贴到Word中,并使用ctrl - h和^t搜索,它可以找到制表符,然后可以用4个空格替换。

这个问题在在这里中有一个副本,但我想我应该提供一个关于现代编辑器及其提供的大量功能的视图。在python代码中,任何需要在.py文件中使用的内容都需要使用tab键或空格来实现。惯例是使用四个空格作为缩进。大多数编辑器都能够在编辑器上直观地显示代码是否使用空格或制表符缩进,这对调试有很大帮助。例如,使用atom,转到首选项,然后编辑器,你可以看到以下两个选项:

原子编辑器显示制表符和空格

然后,如果你的代码使用空格,你会在你的代码缩进的地方看到小点:

enter image description here

如果它使用制表符缩进,你会看到类似这样的东西:

enter image description here

现在,如果你注意到,你可以看到当使用制表符时,左边有更多的错误/警告,这是因为一种叫做pep8 pep8文档的东西,它基本上是python的统一风格指南,因此所有开发人员的代码基本上都是相同的标准和外观,这有助于理解其他人的代码,在pep8中,它有利于使用空格缩进而不是制表符。我们可以看到编辑器显示有一个与pep8警告代码W191有关的警告,

我希望以上所有内容都能帮助您了解您所遇到的问题的性质,以及如何在将来预防它。

使用notepad++可以解决这个问题,方法是用4个__abc2替换__abc1:

  1. 选择搜索→找到……或按Ctrl + F
  2. 选择取代选项卡
  3. 在名为搜索模式的框中选择扩展(\n, \r, \t, \0, \x…)
  4. 在字段找到什么:中写入\ t
  5. 在字段替换为:中按空间 4次。确保在这个领域没有其他的东西。
  6. 单击按钮替换所有

如何用空格替换制表符

使用Vim编辑器解决这个问题

  1. 打开终端(Ctrl + Alt + T)。
  2. 进入文件所在的目录(cd <path_to_your_directory>)。例:cd /home/vineeshvs/work
  3. 在Vim (vim <file_name>)中打开文件。例如:vim myfile.txt
  4. [可选步骤]在Vim中启用搜索关键字高亮显示(ESC :set hlsearch)
  5. 转到出现此问题的行(ESC :<line_number>)。例如:在Vim编辑器中按ESC按钮一次后,:53
  6. 使用Vim (:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc)中所需的空格数替换制表符。例如:Tab将被替换为四个空格使用以下命令::.,$s/\t/ /gc后按ESC按钮一次)。这个过程是交互的。你可以给y用空格替换制表符,给n跳过特定的替换。当您完成所需的替换时,请按ESC

当使用sublime文本编辑器时,我能够选择给我inconsistent use of tabs and spaces in indentation错误的代码段并选择:

view > indentation > convert indentation to spaces

这为我解决了问题。

我在一个.py文件中也遇到了类似的问题。我只是在Pycharm中打开文件,并按Option+Command+L,这一次正确地格式化了文件内容。

我怀疑我遇到了麻烦,因为我使用jupyter labs编写了这个特定的.py文件,而不是我通常选择的sublime text或Pycharm,因此遇到了一些隐藏的缩进问题,这里的许多答案都提到了

我也遇到了同样的问题,我意识到问题是我从另一个python编辑器复制了代码到sublime。

我在用jupyter笔记本,然后我把代码复制到sublime。显然,当你做特定的修改(比如移动函数中的代码)时,缩进就会变得混乱,这就是问题的来源。

所以只使用一个编辑器。如果你这样做了,那么你就没有问题了。

使用pylint,它会给你一个关于你需要多少空间和在哪里的详细报告。

如果你使用ATOM:

进入菜单:将所有制表符转换为空格

试着删除缩进,然后系统地按tab键或空格键4次。当我使用tab键进行缩进,然后在下一行中使用空格键时,通常会发生这种情况。

对于VSCode用户

Ctrl+Shift+P或View->命令面板。

类型

将缩进转换为空格

按回车。

下面的技巧对我很管用:

  1. 复制并粘贴记事本. xml文件中的代码。
  2. 然后从记事本再次选择所有和复制的代码
  3. 粘贴在我的views.py
  4. 在views.py中选择所有新粘贴的代码,并通过从键盘上按shift + tab来删除所有制表符
  5. 现在再次使用tab键来使用正确的缩进

崇高文本的灵魂解决

我对这个问题的解决方案是在空闲编辑器中打开它,然后空闲编辑器会发现你的问题

崇高的文本

while run:


clock.tick(27)
    

milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
    

闲置的编辑器

while run:


clock.tick(27)
    

milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)

我并不是说你应该只使用空闲编辑器。我的意思是,如果你得到错误你应该检查idle编辑器

对于Anaconda, Spyder用户,您可以访问Source>解决压痕

Jupyter用户:

CTRL + Shift + P自动标识选区: enter image description here < / p >

虽然最初的问题是关于自己编写的代码,但搜索引擎在搜索标题字符串时引导到这里。当试图使用已经存在的库或工具时,很可能会收到错误消息。

对于那些试图使用别人代码的人来说;根据Python中的Tab错误,这是一个python2 vs. python3的东西(这个答案也引用了PEP8格式指南. c的相关部分)。