iT邦幫忙

0

Spyder 的空格與 TAB

  • 分享至 

  • xImage

這是多了 空格與 tab 鍵 , 但我怎麼刪都刪不掉

TabError: inconsistent use of tabs and spaces in indentation

https://ithelp.ithome.com.tw/upload/images/20190907/20119742LBbWtmNjFz.png

錯誤跑下去了 , 刪除 4 個空白 , 用一個 TAB , 還是錯誤

https://ithelp.ithome.com.tw/upload/images/20190907/20119742Wyen79Lwvc.png

看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 2 級 ‧ 2019-09-07 08:05:58 檢舉
https://ithelp.ithome.com.tw/questions/10195166
怪了 給你參考的範側 1_get_weather_htm_data.py
我剛檢查過沒有用....作縮排的啊,你那是自己編輯的嗎?

PYTHON用到縮排的時候 常見的是會用四個空格(....)作縮排,但也可以用TAB符號(就是你看到那個右箭頭)作縮排,重點是不混在一起用,你要用空格作縮排就全部用空格,要用TAB就全部用TAB,不要混用不要混用不要混用,很重要所以要說三次,出錯的原因是這樣來的,了解嗎?

範例下載 :
http://www.web3d.url.tw/PYTHON_20190907/WEATHER.zip

註: 因為我習慣用TAB縮排了所以在學Python時自然而然的就用TAB作縮排符號,網路上看到大部份的範例都是四個空格作縮排。
kevin543 iT邦新手 5 級 ‧ 2019-09-07 08:45:20 檢舉
你要用空格作縮排就全部用空格,要用TAB就全部用TAB , 了解 , 我寫註解時又重新縮排才會錯誤 , 現在錯誤又跑到下面去 , 上圖我刪除四個空格後 , 然後用一個 TAB , 但還是錯誤 , 可以到下面回復嗎 ? 這樣你回答時 , 我才可以貼圖 , 感謝你多次回答
ccutmis iT邦高手 2 級 ‧ 2019-09-07 09:37:48 檢舉
1.如果你是習慣用四個空格作縮排 可以用"搜尋/取代"把全部TAB換成空格。
2.上面的圖看上去,感覺你對於PYTHON的縮排原則沒概念,
例如:
except:
→→→print('Error......')
→→→#註解
log(....)

這裡的log(...)應該跟print('Error....')在同一層才對,例如
→→→print('Error......')
→→→#註解
→→→log(....)

而且如果log(...)是在第三層
那麼 try ... except ... finally 應該是第二層,例如:
→→try:
→→→pass
→→except:
→→→print('Error......')
→→→#註解
→→→log(....)
→→finally:
→→→pass

Python縮排參考:
https://yungyuc.github.io/oldtech/python/python_intro.html#id19
然後把我給你的範例下載來對照看看問題出在哪應該就行了
kevin543 iT邦新手 5 級 ‧ 2019-09-07 22:15:19 檢舉
謝謝你講的這麼詳細 , 你願意當我顧問嗎 ? 每月多少錢你願意 , 我按 tab 鍵 , 怎麼是四個空格(....) , 卻不是右箭頭
ccutmis iT邦高手 2 級 ‧ 2019-09-08 21:03:09 檢舉
我是用Notepad++(純文字編輯器)在寫python,
你說按tab鍵會變成4個空格那個應該是Spyder軟體裡面的功能,
那你就把全部縮排都用四個空格就好(把所有的tab用四個空格取代掉)
或是進Spyder的設定裡面找一下,把這個功能取消(但不建議這麼做)
我python沒有到能當顧問的程度 你有遇到問題在ithelp問就好 或是另外發文問一下有沒有人要當你的顧問
kevin543 iT邦新手 5 級 ‧ 2019-09-08 21:14:35 檢舉
我覺得你的回答很適合我 , 所以才想找你當顧問 , 我的另一篇請你幫我看註解與問題 , 你有看到嗎 ? 因為像那篇那麼多問題 , 又密密麻麻的 , 應該要花錢請人看才有人願意看 , 這裡貼請顧問會違反板規嗎 ?
ccutmis iT邦高手 2 級 ‧ 2019-09-08 23:10:55 檢舉
不知道呢 因為我沒貼過 不過我是有看過有人在貼文找外包的 不是假詢問真廣告的話應該不致於違規~
謝謝您的信任 我自認沒那個水準當顧問所以不敢接 而且你不是有在補習班上課嗎 為何不以上課老師教的為準呢?
kevin543 iT邦新手 5 級 ‧ 2019-09-09 03:34:48 檢舉
這個 UBIKE 是結業的專題 , 我們小組有 6 個人 , 我們決定的專題內容 , 老師教的是基礎的 , 應用到專題上 , 還是有些方面不會 , 所以才到網上請教大家
kevin543 iT邦新手 5 級 ‧ 2019-09-09 10:25:03 檢舉
請問在 24:00 處的B欄 , 資料會固定寫成 5 位數
ccutmis iT邦高手 2 級 ‧ 2019-09-09 10:52:01 檢舉
你檢查一下2_read_htm_data_and_save_csv.py裡面的倒數第二行是不是下面這樣
f.writelines("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n"%(location_dict[i],datestring+' '+(j[0] if j[0]!='24' else '00')+':00:00',j[1],j[2],j[3],j[4],j[5],j[6],j[7],j[8],j[9],j[10],j[11],j[12],j[13],j[14],j[15],j[16]))

不是的話請改成上面的寫法,這個主要是把24:00修正為00:00,之前我在第一次轉CSV檢查時有看到這問題,可能那時沒改到的範例直接上傳到網路了,改完應該就不會再有你說的資料固定寫成5位數的問題。
kevin543 iT邦新手 5 級 ‧ 2019-09-09 23:05:01 檢舉
感謝你這麼熱心 , 改了之後中文變亂碼 , 01:00 欄位左移跟站名合併
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2019-09-09 10:54:34
最佳解答

python 的 intentation (縮排) 可選用 spaces 或 tab,但不可以混合使用

所以,不管使用任何一種編輯器
要做的事情是「讓程式碼統一使用 spaces 或 tab」

以原始碼來看,前人已經選擇使用tab
以目前使用的編輯器來看,設定的是spaces

那就有兩個選擇(註1)
1.選擇 tab,就去把編輯器的設定改為 tab (註2)
2.選擇 spaces,就手動把原始碼裡所有 tab 字元「取代」成 spaces

註1:選擇之前,可以參考看看2019/09/08 的 PEP 關於 spaces或tab 的說明
註2:以 spyder 為例,設定路徑為
Tools >>> Preferences >>> Editor >>> Advanced settings >>> Indentation characters

選我正解

我要發表回答

立即登入回答