2014-01-16 2 views
0

아래의 파이썬 코드를 내 macvim에 붙여 넣으려고하는데 "예기치 않은 들여 쓰기"가 발생합니다.파이썬 내 MacVim에 예기치 않은 들여 쓰기

## Can build up a dict by starting with the the empty dict {} 
## and storing key/value pairs into the dict like this: 
## dict[key] = value-for-that-key 
dict = {} 
dict['a'] = 'alpha' 
dict['g'] = 'gamma' 
dict['o'] = 'omega' 

print dict ## {'a': 'alpha', 'o': 'omega', 'g': 'gamma'} 

print dict['a']  ## Simple lookup, returns 'alpha' 
dict['a'] = 6  ## Put new key/value into dict 
'a' in dict   ## True 
## print dict['z']     ## Throws KeyError 
if 'z' in dict: print dict['z']  ## Avoid KeyError 
print dict.get('z') ## None (instead of KeyError) 

탭과 공백이 섞여 있기 때문에 확인했지만 아무 것도 발견되지 않았습니다.

python -tt new.py 
File "new.py", line 4 
dict = {} 
^ 
IndentationError: unexpected indent 

또한이 때문에 자동으로 내 빔에 의해 들여 쓰기 될 수 있음을 발견하고, 하나가 작동하지 않았다
:set paste 

를 사용하여 비활성화하려고 노력했다. 다음은이 내가 바보되는 매우 간단한 뭔가 빠진 파일

00000000 20 20 23 23 20 43 61 6e 20 62 75 69 6c 64 20 75 | ## Can build u| 
00000010 70 20 61 20 64 69 63 74 20 62 79 20 73 74 61 72 |p a dict by star| 
00000020 74 69 6e 67 20 77 69 74 68 20 74 68 65 20 74 68 |ting with the th| 
00000030 65 20 65 6d 70 74 79 20 64 69 63 74 20 7b 7d 0a |e empty dict {}.| 
00000040 20 20 23 23 20 61 6e 64 20 73 74 6f 72 69 6e 67 | ## and storing| 
00000050 20 6b 65 79 2f 76 61 6c 75 65 20 70 61 69 72 73 | key/value pairs| 
00000060 20 69 6e 74 6f 20 74 68 65 20 64 69 63 74 20 6c | into the dict l| 
00000070 69 6b 65 20 74 68 69 73 3a 0a 20 20 23 23 20 64 |ike this:. ## d| 
00000080 69 63 74 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 |ict[key] = value| 
00000090 2d 66 6f 72 2d 74 68 61 74 2d 6b 65 79 0a 20 20 |-for-that-key. | 
000000a0 64 69 63 74 20 3d 20 7b 7d 0a 20 20 64 69 63 74 |dict = {}. dict| 
000000b0 5b 27 61 27 5d 20 3d 20 27 61 6c 70 68 61 27 0a |['a'] = 'alpha'.| 
000000c0 20 20 64 69 63 74 5b 27 67 27 5d 20 3d 20 27 67 | dict['g'] = 'g| 
000000d0 61 6d 6d 61 27 0a 20 20 64 69 63 74 5b 27 6f 27 |amma'. dict['o'| 
000000e0 5d 20 3d 20 27 6f 6d 65 67 61 27 0a 0a 20 20 70 |] = 'omega'.. p| 
000000f0 72 69 6e 74 20 64 69 63 74 20 20 23 23 20 7b 27 |rint dict ## {'| 
00000100 61 27 3a 20 27 61 6c 70 68 61 27 2c 20 27 6f 27 |a': 'alpha', 'o'| 
00000110 3a 20 27 6f 6d 65 67 61 27 2c 20 27 67 27 3a 20 |: 'omega', 'g': | 
00000120 27 67 61 6d 6d 61 27 7d 0a 0a 20 20 70 72 69 6e |'gamma'}.. prin| 
00000130 74 20 64 69 63 74 5b 27 61 27 5d 20 20 20 20 20 |t dict['a']  | 
00000140 23 23 20 53 69 6d 70 6c 65 20 6c 6f 6f 6b 75 70 |## Simple lookup| 
00000150 2c 20 72 65 74 75 72 6e 73 20 27 61 6c 70 68 61 |, returns 'alpha| 
00000160 27 0a 20 20 64 69 63 74 5b 27 61 27 5d 20 3d 20 |'. dict['a'] = | 
00000170 36 20 20 20 20 20 20 20 23 23 20 50 75 74 20 6e |6  ## Put n| 
00000180 65 77 20 6b 65 79 2f 76 61 6c 75 65 20 69 6e 74 |ew key/value int| 
00000190 6f 20 64 69 63 74 0a 20 20 27 61 27 20 69 6e 20 |o dict. 'a' in | 
000001a0 64 69 63 74 20 20 20 20 20 20 20 20 20 23 23 20 |dict   ## | 
000001b0 54 72 75 65 0a 20 20 23 23 20 70 72 69 6e 74 20 |True. ## print | 
000001c0 64 69 63 74 5b 27 7a 27 5d 20 20 20 20 20 20 20 |dict['z']  | 
000001d0 20 20 20 20 20 20 20 20 20 20 20 23 23 20 54 68 |   ## Th| 
000001e0 72 6f 77 73 20 4b 65 79 45 72 72 6f 72 0a 20 20 |rows KeyError. | 
000001f0 69 66 20 27 7a 27 20 69 6e 20 64 69 63 74 3a 20 |if 'z' in dict: | 
00000200 70 72 69 6e 74 20 64 69 63 74 5b 27 7a 27 5d 20 |print dict['z'] | 
00000210 20 20 20 20 23 23 20 41 76 6f 69 64 20 4b 65 79 | ## Avoid Key| 
00000220 45 72 72 6f 72 0a 20 20 70 72 69 6e 74 20 64 69 |Error. print di| 
00000230 63 74 2e 67 65 74 28 27 7a 27 29 20 20 23 23 20 |ct.get('z') ## | 
00000240 4e 6f 6e 65 20 28 69 6e 73 74 65 61 64 20 6f 66 |None (instead of| 
00000250 20 4b 65 79 45 72 72 6f 72 29 0a     | KeyError).| 
0000025b 

암의 16 진 덤프 내의 .vimrc 파일

set nobackup 
set nowritebackup 
set noswapfile 
set lines=40 
set columns=80 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set autoindent 
set smarttab 
set retab 
set paste 
filetype indent on 
filetype on 
filetype plugin on 

입니까? PyCharm과 같은 Python 기반 IDE로 이동할 것을 권장할까요?

+1

'dict'은 파이썬 사전을 구현하는 클래스의 이름입니다. 왜 그걸 배정하니? 나는 이것이 당신의 문제인지는 모르겠지만 내가해야 할 첫 번째 일은 다른 이름을 사용하는 것이다. –

+0

다른 이름을 사용해 보았는데 도움이되지 않았습니다. 이 코드는 Google Python 클래스에서 가져온 것입니다. 붙여 넣기 만하면됩니다. 감사. – h1py

+0

그러면 이상합니다. 어쩌면 파일의 바이너리 덤프를 할 수 있을까요? 나는 Vim에서 파이썬 코드를 항상 편집하고, 이전에 숨겨진 들여 쓰기가 없었습니다. –

답변

1

16 진수 덤프에는 첫 번째 코드 줄 앞에 두 개의 공백이 있습니다. 즉, 처음 들여 쓰기가 두 칸 있었고 파이썬은 공백 (또는 탭)을 전혀 기대하지 않았습니다. 바이트 0x9e 및 0x9f는 공백이며, 바이트 0xa0은 dict = {}의 'd'입니다.

'hlsearch'옵션이 켜져 있으면 /^\s*으로 시작 공백을 볼 수 있습니다.

+0

확인. 모든 행에서 처음 두 공백을 제거하면 코드가 제대로 실행됩니다. 하지만 왜 내가 공간을 전혀 기대하지 파이썬 알아? 파이썬 안에서 무언가를 편집 할 수 있습니다. 처음에는 두 개의 공백을 사용할 수 있습니다. 감사. – h1py

+0

내가 공백없는 공백 문자로 시작해야하는 이유가 무엇인지 모르겠다. 귀도가 그것을 원했던 것 같다. 어쩌면 다른 누군가가 더 나은 이유가있을 수 있습니다. –

+0

차가움. 시간 내 줘서 고마워 :) – h1py