GVKun编程网logo

IndentationError:意外的缩进错误(意外缩进怎么解决)

11

关于IndentationError:意外的缩进错误和意外缩进怎么解决的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于IndentationError:unindentdoesnotmat

关于IndentationError:意外的缩进错误意外缩进怎么解决的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于IndentationError: unindent does not match any outer indentation level、IndentationError: unindent does not match any outer indentation level 笔记、IndentationError: unindent does not match any outer indentation level解决策略、IndentationError: unindent 不匹配任何外部缩进级别等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

IndentationError:意外的缩进错误(意外缩进怎么解决)

IndentationError:意外的缩进错误(意外缩进怎么解决)

我是Python的新手,正在收到此错误:

Traceback (most recent call last):  File "/usr/local/bin/scrapy", line 4, in <module>    execute()  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 130, in execute    _run_print_help(parser, _run_command, cmd, args, opts)  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 96, in _run_print_help    func(*a, **kw)  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/cmdline.py", line 136, in _run_command    cmd.run(args, opts)  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/commands/crawl.py", line 42, in run    q = self.crawler.queue  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/command.py", line 31, in crawler    self._crawler.configure()  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/crawler.py", line 36, in configure    self.spiders = spman_cls.from_settings(self.settings)  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/spidermanager.py", line 33, in from_settings    return cls(settings.getlist(''SPIDER_MODULES''))  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/spidermanager.py", line 23, in __init__    for module in walk_modules(name):  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scrapy/utils/misc.py", line 65, in walk_modules    submod = __import__(fullpath, {}, {}, [''''])  File "/my_crawler/empt/empt/spiders/empt_spider.py", line 59    check_exists_sql = "SELECT * FROM LINKS WHERE link = ''%s'' LIMIT 1" % item[''link'']    ^IndentationError: unexpected indent

在这段代码上:

def parse_item(self, response):    hxs = HtmlXPathSelector(response)    sites = hxs.select(''//a[contains(@href, ".mp3")]/@href'').extract()    items = [ ]    #for site in sites:        #link = site.select(''a/@href'').extract()        #print site    for site in sites:        item = EmptItem()        item[''link''] = site #site.select(''a/@href'').extract()        #### DB INSERT ATTEMPT ###        #MySQL Test        #open db connection        db = MySQLdb.connect("localhost","root","str0ng","TESTDB")        #prepare a cursor object using cursor() method        cursor = db.cursor()        #see if any links in the DB match the crawled link        check_exists_sql = "SELECT * FROM LINKS WHERE link = ''%s'' LIMIT 1" % item[''link'']        cursor.execute(check_exists_sql)        if cursor.rowcount = 0:            #prepare SQL query to insert a record into the db.            sql = "INSERT INTO LINKS ( link ) VALUES ( ''%s'')" % item[''link'']            try:                #execute the sql command                cursor.execute(sql)                #commit your changes to the db                db.commit()            except:                #rollback on error                db.rollback()                #fetch a single row using fetchone() method.                #data = cursor.fetchone()                #print "Database version: %s " % data            #disconnect from server            db.close()            ### end mysql        items.append(item)    return items​

答案1

小编典典

尽管缩进错误在StackOverflow页面上很明显,但它们可能不在您的编辑器中。您在这里混合使用不同的缩进类型,1、4和8个空格。根据PEP8,您应始终使用四个空格进行缩进。您还应该避免混用制表符和空格。

我还建议您尝试使用‘
-tt‘命令行选项来运行脚本,以确定何时意外混合使用制表符和空格。当然,任何体面的编辑器都可以突出显示制表符和空格(例如Vim的''list''option)。

IndentationError: unindent does not match any outer indentation level

IndentationError: unindent does not match any outer indentation level

python中约到的问题,
IndentationError: unindent does not match any outer indentation level
占位问题,存在两种可能性:1.代码没有对齐 2.存在非法字符与其他格式的不可见的内容(输入法的问题)

解决:

  • 1.TAB对齐代码
  • 2.选择代码,缩进-删除(or插入)制表符

 

 

notepad++操作路径, 编辑-缩进

IndentationError: unindent does not match any outer indentation level 笔记

IndentationError: unindent does not match any outer indentation level 笔记

 

   执行一个 Python 脚本的时候,报IndentationError: unindent does not match any outer indentation level" 错误,搜索了一下相关资料,遇到这个错误,是因为新的 Python 语法中是不支持的代码对齐中,混用 TAB 和空格的。

 

# python get_mssql_job_info.py

  File "get_mssql_job_info.py", line 29

    db_sub_conn = pymssql.connect(host=row[1],

                                             ^

IndentationError: unindent does not match any outer indentation level

 

 

 

 如上所示,可以使用 Notepad++ 打开脚本,勾选显示空格与制表符,此时你会看到代码对齐使用了制表符与空格

 

clip_image001

 

 

clip_image002

 

 

我用空格替换了制表符后,发现还是报这个错误,最后发现报错行上面注释的地方也要注意代码对齐,而我代码里面上面的 '''''' 使用制表符, 下面的 '''''' 使用空格。所以这里也必须一致

 

clip_image003

 

 

解决方法:

 

 

1: 使用工具 pycharm  有个快捷键 CTRL+ALT+L 格式化代码。

 

2: 在 Notepad++ 的首先项里面,可以勾选替换为空格,如下所示,不同版本的 Notepad++,可能设置选项有所出入。这样可以避免使用 Tab + 空格键时出现这种情况。

clip_image004

 

 

后面我又遇到了下面IndentationError: unexpected indent 这个错误:

 

 

# python get_mssql_job_info.py

  File "get_mssql_job_info.py", line 37

    sub_cursor =db_sub_conn.cursor(as_dict=True)

    ^

IndentationError: unexpected indent

 

结果也是发现注释也必须和代码对齐

 

clip_image005

 

正确的对齐方式如下:

 

clip_image006

 

 

虽然是一个小小的问题,还是折射出对 Python 代码对齐理解的一些细节问题的疏忽。

IndentationError: unindent does not match any outer indentation level解决策略

IndentationError: unindent does not match any outer indentation level解决策略

【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level解决策略

我在开发游戏的时候,发现一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: 

IndentationError: unindent does not match any outer indentation level

【解决过程】 

以下我将提供两种环境对错误进行更改:

Nodepad++:

1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。 
都是用TAB键,对齐好了的,没有不对齐的行数啊。 
2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。 
结果还是此语法错误。 
3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。

当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。 
找到了,在: 
视图 -> 显示符号 -> 显示空格与制表符

notepad   显示空格与制表符

然后就看出问题来了: 
原来错误的行数是1580行:

python error line

但是源码的1580行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对齐,混用了TAB键和空格:

1580 space and tab mixed
而新的Python语法,是不支持的代码对齐中,混用TAB和空格的。所以出现上述错误提示了。

知道原因了,解决起来就简单了: 
去把对应的TAB,都改为空格,统一一下对齐的风格,即可。 
在Notepad++中,去: 
设置->首选项:

设置 首选项

语言->以空格取代(TAB键):

语言 以空格取代Tab

即可实现,对于以后每次的TAB输入,都自动转换为4个空格。

Sublime Text3:

直接在View - Indentation 下的命令可控制转换

【总结】

Python中遇到IndentationError,以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。

估计很多人也都是此类原因导致的。记得统一一下就好

IndentationError: unindent 不匹配任何外部缩进级别

IndentationError: unindent 不匹配任何外部缩进级别

当我编译下面的 Python 代码时,我得到

IndentationError: unindent 不匹配任何外部缩进级别


import sys

def Factorial(n): # Return factorial
    result = 1
    for i in range (1,n):
        result = result * i
    print "factorial is ",result
    return result

为什么?

今天关于IndentationError:意外的缩进错误意外缩进怎么解决的介绍到此结束,谢谢您的阅读,有关IndentationError: unindent does not match any outer indentation level、IndentationError: unindent does not match any outer indentation level 笔记、IndentationError: unindent does not match any outer indentation level解决策略、IndentationError: unindent 不匹配任何外部缩进级别等更多相关知识的信息可以在本站进行查询。

本文标签: