파이썬 들여 쓰기를 수정하는 방법
들여 쓰기가 일치하지 않는 Python 코드가 있습니다. 문제를 더욱 악화시키기 위해 탭과 공백이 많이 혼합되어 있으며 공간 들여 쓰기도 보존되지 않습니다.
코드가 예상대로 작동하지만 유지 관리가 어렵습니다.
코드를 깨지 않고 들여 쓰기를 수정하려면 어떻게해야합니까 ( HTML Tidy 와 같지만 Python의 경우)?
Python 설치 디렉토리에 있는 reindent.py
스크립트를 사용하십시오 Tools/scripts/
.
4 칸 들여 쓰기를 사용하고 하드 탭 문자를 사용하지 않도록 Python (.py) 파일을 변경하십시오. 또한 줄 끝에서 여분의 공백과 탭을 자르고 파일 끝에서 빈 줄을 제거하십시오. 또한 마지막 줄은 줄 바꿈으로 끝나야합니다.
자세한 사용법 지침은 해당 스크립트를 살펴보십시오.
Vim을 사용하는 경우를 참조하십시오 :h retab
.
* : ret * * : retab * : [범위] ret [ab] [!] [new_tabstop] 공백을 포함하는 모든 일련의 공백을 바꿉니다. 새로운 공백 문자를 사용한 <Tab> 주어진 tabstop 값. 새 것을 지정하지 않으면 tabstop 크기 또는 0, Vim은 현재 값을 사용합니다 '탭 스톱'. 'tabstop'의 현재 값은 항상 기존 탭의 너비를 계산하십시오. !를 사용하면 Vim은 일반 문자열 만 대체합니다. 적절한 곳에 탭이있는 공간. '확장 탭'을 켜면 Vim은 모든 탭을 적절한 수의 공간. 이 명령은 'tabstop'을 새로운 값으로 설정합니다. 전체 파일에서 수행되는 경우 (기본값) 눈에 띄는 변경을하지 않아야합니다. 주의 :이 명령은 모든 <Tab> 문자를 수정합니다 C 프로그램에서 문자열 내부. "\ t"를 사용하여 피하십시오 이것은 (어쨌든 좋은 습관입니다). ": retab!" 또한 일련의 공백을 다음과 같이 변경할 수 있습니다. printf ()를 망칠 수있는 <Tab> 문자 {가 아닌 Vi} | + ex_extra | 에 기능이 비활성화되었습니다 컴파일 시간.
예를 들어 간단히 입력하면
: ret
모든 탭이 공백으로 확장됩니다.
당신은 할 수 있습니다
: se et ": : set expandtab의 약자
새 줄에서 리터럴 탭을 사용하지 않도록합니다.
Vim을 사용하지 않는 경우
perl -i.bak -pe "s / \ t / ''x (8-pos () % 8) / eg"file.py
는 8 문자마다 탭이 중지된다고 가정 할 때 탭이 공백으로 바뀝니다 file.py
(원본 file.py.bak
은 경우에 따라). 탭 스탑이 4 칸 간격 인 경우 8을 4로 바꿉니다.
autopep8 이이 작업 을 수행하도록 도달 합니다.
$ # see what changes it would make
$ autopep8 path/to/file.py --select=E101,E121 --diff
$ # make these changes
$ autopep8 path/to/file.py --select=E101,E121 --in-place
참고 : E101 및 E121 은 pep8 들여 쓰기입니다 ( --select=E1
E1로 시작하는 모든 들여 쓰기 관련 문제를 해결하기 위해 간단히 전달할 수 있다고 생각합니다 ).
재귀 플래그를 사용하여 전체 프로젝트에이를 적용 할 수 있습니다.
$ autopep8 package_dir --recursive --select=E101,E121 --in-place
Python 코드를 PEP8 호환으로 변환하는 도구 도 참조하십시오 .
autopep8 -i script.py
autopep8 사용
autopep8
PEP 8
nullstyle
가이드 에 맞게 Python 코드를 자동으로 형식화합니다 . pep8 유틸리티를 사용하여 nullcode
포맷해야 할 부분을 결정합니다 . autopep8
에서 nullformatting
보고 할 수있는 대부분의 문제를 해결할 수 있습니다 pep8
.
pip install autopep8
autopep8 script.py # print only
autopep8 -i script.py # write file
Vim을 사용하면을 Esc누른 다음 입력 하는 것보다 더 복잡하지 않아야합니다 .
:%s/\t/ /g
... 변경하려는 파일에서. 모든 탭을 4 개의 공백으로 변환합니다. 간격이 일치하지 않으면 더 어려워집니다.
PythonTidy 도 있습니다 (HTML Tidy를 좋아한다고 말했기 때문에).
탭 정리보다 더 많은 것을 할 수 있습니다. 그런 종류의 것을 좋아한다면 살펴볼 가치가 있습니다.
대부분의 UNIX 계열 시스템에서는 다음을 실행할 수도 있습니다.
expand -t4 oldfilename.py > newfilename.py
탭을 4가 아닌 다른 공백으로 바꾸려면 명령 줄에서 숫자를 변경하십시오. 원래 파일 이름을 유지하면서 한 번에 많은 파일로이를 수행하는 쉘 스크립트를 쉽게 작성할 수 있습니다.
나처럼 게으른 경우 엉망 들여 쓰기를위한 자동 수정 도구가있는 Wingware Python IDE의 평가판을 다운로드 할 수도 있습니다. 꽤 잘 작동합니다. http://www.wingware.com/
모듈이 누락되어 reindent 스크립트가 작동하지 않았습니다. 어쨌든, 나는이 sed
명령이 나를 위해 완벽하게 작동한다는 것을 알았 습니다.
sed -r 's/^([ ]*)([^ ])/\1\1\2/' file.py
이맥스를 사용해보십시오. 파이썬에서 필요한 들여 쓰기를 잘 지원합니다. 이 링크를 확인하십시오 http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
이 문제에 대한 간단한 해결책이 있습니다. 먼저 ": retab"을 입력 한 다음 ": retab!"을 입력하면 모든 것이 정상입니다.
IDLE을 시도 하고 Alt+ X를 사용 하여 들여 쓰기를 찾으십시오.
참고 URL : https://stackoverflow.com/questions/1024435/how-to-fix-python-indentation
'Programing' 카테고리의 다른 글
일치하는 함수 포인터를 호출하기 위해 튜플 "풀기" (0) | 2020.04.05 |
---|---|
SortedList와 SortedDictionary의 차이점은 무엇입니까? (0) | 2020.04.05 |
풀 : apply, apply_async 또는 map을 언제 사용합니까? (0) | 2020.04.05 |
전체 Android 앱에 기본 글꼴 모음을 설정하는 방법 (0) | 2020.04.05 |
힘내 체크 아웃 의미 더블 대시 (0) | 2020.04.05 |