2011-12-26 40 views
26

Đây là mã của tôi ... Tôi nhận được lỗi thụt lề nhưng tôi không biết tại sao nó xảy ra.Thụt lề PythonError: indent không mong muốn

->

# loop 
while d <= end_date: 
    # print d.strftime("%Y%m%d") 
    fecha = d.strftime("%Y%m%d") 
    # set url 
    url = 'http://www.wpemergencia.omie.es//datosPub/marginalpdbc/marginalpdbc_' + fecha + '.1' 
    # Descargamos fichero 
    response = urllib2.urlopen(url) 
    # Abrimos fichero 
    output = open(fname,'wb') 
    # Escribimos fichero 
    output.write(response.read()) 
    # Cerramos y guardamos fichero 
    output.close() 
    # fecha++ 
    d += delta 
+5

Kết hợp tab và dấu cách? – taskinoor

+0

Không có 'Lỗi thụt lề ở đây'. Nó phải ở nơi khác trong mã của bạn, cùng với các định nghĩa của 'd' và' end_date'. Vui lòng cung cấp [SSCCE] (http://sscce.org/). – Johnsyweb

+2

Bất kỳ trình soạn thảo nửa phong nha nào đều có tùy chọn bằng cách nào đó hiển thị dấu cách và tab một cách trực quan. Dùng nó. – sbk

Trả lời

43

Chạy chương trình của bạn với

python -t script.py 

này sẽ cảnh báo bạn nếu bạn có các tab và không gian trộn.

Trên hệ thống * nix, bạn có thể nhìn thấy nơi các tab là bằng cách chạy

cat -A script.py 

và bạn có thể tự động chuyển đổi các tab đến 4 không gian với lệnh

expand -t 4 script.py > fixed_script.py 

PS. Đảm bảo sử dụng trình chỉnh sửa lập trình (ví dụ: emacs, vim), không phải là trình xử lý văn bản khi lập trình. Bạn sẽ không gặp vấn đề này với trình soạn thảo lập trình.

PPS. Đối với người dùng emacs, M-xwhitespace-mode sẽ hiển thị thông tin giống như cat -A từ bên trong bộ đệm emacs!

+0

Không phải là unutbu không hoàn thành trong câu trả lời của anh/cô ấy, tôi đã có cùng một vấn đề và khi sử dụng cat -A script.py bạn ngay lập tức có thể nhìn thấy các vết lõm mất tích. Ngay cả khi bạn sao chép và dán và nó có thể giống như một thụt lề trong trình soạn thảo của bạn. Nó trong thực tế là không, vì vậy hãy cẩn thận. –

7

Kiểm tra xem bạn tab hỗn hợp và không gian, đó là một nguyên nhân thường xuyên lỗi thụt đầu dòng.

3

Bạn không thể kết hợp tab và dấu cách để nhận dạng. Cách tốt nhất là chuyển đổi tất cả các tab thành dấu cách.

Cách sửa lỗi này? Bạn chỉ cần xóa tất cả các dấu cách/tab trước mỗi dòng và chuyển đổi chúng thành hai tab HOẶC dấu cách, nhưng không trộn lẫn. Giải pháp tốt nhất: cho phép trong Trình chỉnh sửa của bạn tùy chọn chuyển đổi tự động bất kỳ tab nào thành không gian. Cũng cần lưu ý rằng vấn đề thực tế của bạn có thể nằm trong các dòng trước khối này, và python ném lỗi ở đây, bởi vì thụt lề không hợp lệ hàng đầu không khớp với các định danh sau đây!

7

tìm tất cả các tab và được thay thế bằng 4 dấu cách trong notepad ++. Nó hoạt động.

+0

Sau một năm rưỡi kể từ khi câu hỏi ban đầu đã được đăng, bạn thực sự không thể tìm thấy bất kỳ điều gì mới để đề xuất. Chào mừng bạn đến với SO và vui lòng đọc câu trả lời trước đó trước khi bạn đăng câu trả lời của riêng mình. Đừng lặp lại câu trả lời đã tồn tại. – Wh1T3h4Ck5

0

Đơn giản chỉ cần sao chép kịch bản của bạn và đặt dưới "" "toàn bộ mã của bạn ''" ...

định dòng này trong một biến .. như,

a = """ your entire code """ 
print a.replace(' ',' ') # first 4 spaces tab second four space from space bar 

print a.replace('here please press tab button it will insert some space"," here simply press space bar four times") 
# here we replacing tab space by four char space as per pep 8 style guide.. 

tại thực thi mã này, trong tuyệt vời bằng cách sử dụng ctrl + b, bây giờ nó sẽ in mã thụt vào trong giao diện điều khiển. đó là số

Các vấn đề liên quan