Python 3.0,3.1,3.2에서 "ValueError : 형식의 길이가 0 인 필드 이름"오류


120

나는 파이썬을 배우려고 노력하고 있는데 (3 더 구체적으로)이 오류가 발생합니다.

ValueError: zero length field name in format

나는 그것을 봤는데 번호를 지정해야한다는 것을 알았습니다.

a, b = 0, 1
if a < b:
     print('a ({0}) is less than b ({1})'.format(a, b))
else:
     print('a ({0}) is not less than b ({1})'.format(a, b))

그리고 (lynda.com의) 튜토리얼과는 달리 실제로 다음과 같이 말합니다.

a, b = 0, 1
if a < b:
     print('a ({}) is less than b ({})'.format(a, b))
else:
     print('a ({}) is not less than b ({})'.format(a, b))

다음 튜토리얼 im에는 Python 3.1이 있고 im은 3.2를 사용하고 있으며이 오류에 대해 읽은 것은 이것이 <3.1 (3.0)에서만 발생한다는 것입니다. 3.2에서이 작업을 취소 했습니까? 아니면 내가 뭘 잘못하고 있습니까?

또한 천천히 말하십시오;) 이것은 말 그대로 파이썬을 배우는 첫날이며 파이썬으로 작성한 두 번째 "스크립트"입니다.


1
이것을 추가해보십시오 : import sys; print (sys.version), 우연히 다른 버전의 파이썬을 호출하지 않았는지 확인하기 위해
Winston Ewert 2011 년

답변:


131

나는 당신이 어떻게 든 우연히 파이썬 2.6을 실행하고 있다고 추측 할 것입니다.

이 기능은 python 3을 사용하는 경우 3.1 이상, python 2를 사용하는 경우 2.7에서만 사용할 수 있습니다.


3
감사! 그거였다! 내 shebangs를 다음과 같이 변경 #! /usr/local/bin/python3해야했습니다. Mac -_- wtf에는 3 개의 다른 위치의 Python 설치가 있습니다.
Oscar Godson 2011 년

4
이것은 부분적으로 정확합니다. OP의 코드는 파이썬 2.7이면 작동하지만 2.6은 작동하지 않습니다. (@Dennis Williamson의 답변 참조).
mayhewsw

Windows의 Python 3.0.1에서이 문제가 발생합니다. (Python cmdline을 시작한 후 첫 번째 줄에 3.0.1이라고 명시되어 있습니다.)
inger

@inger, 당신은 그것을 사용하기 위해 파이썬 3.1이 필요합니다.
Winston Ewert 2015

흠, 빠른 답장을 보내 주셔서 감사합니다. 그러나 아래 답변은 "2.7 이상"이라고되어 ​​있습니다. 3.0.1이 이전 버전 이었나요? 또한 OP는 3.0 (+ 기타)의 문제에 대해 질문했습니다. 대답은 "당신은 2.6을 실행하고 있습니다."는 3.0 자체가 괜찮다는 것을 의미합니다. 답변을 업데이트 할 수 있다면 좋을 것입니다. 감사합니다
Inger 2015-04-26

148

Python 2.6 및 3.0에는 필드 번호가 필요합니다. Python 2.7 이상 및 3.1 이상에서는 생략 할 수 있습니다.

버전 2.7에서 변경 : 위치 인수 지정자를 생략 할 수 있으므로 '{} {}'는 '{0} {1}'와 동일합니다.

python2.6.4>>> print '|{0:^12}|{1:^12}|'.format(3,4)
|     3      |     4     |

2
버전 차이가 오늘 나를 훔쳤습니다! 포인터 주셔서 감사합니다.
Richard Clayton

@Dennis : 필드 번호를 지정하여 이전 버전의 Python에서 문제를 해결하는 방법을 보여 주었기 때문에 답변에 투표했습니다. 그러나 "Python 2.7 이상"이라는 말은 여기 다른 답변에 따르면 Python 3.0에서 필드 번호가 필요하기 때문에 오해의 소지가있는 것 같습니다. Winston은 2.7이 3.0 이후에 나왔다는 그의 답변에 대한 마지막 의견에서 지적 했으므로 귀하의 진술은 연대순으로 정확할 수 있지만 우리 대부분은 빈 중괄호가 3.0에서 작동해야 함을 나타내는 것으로 읽습니다.
Tom Barron 2015 년

@TomBarron : 빈 중괄호는 나를 위해 작동합니다 : python3.4 -c 'print("|{}|{}|".format(3,4))',하지만 분명히 3.0에는 없습니다 (3.1 이상에서는 있음). 내 대답을 명확히 할 것입니다.
추후 공지가있을 때까지 일시 중지되었습니다.

2

Eclipse를 사용하는 경우 Window-> Preferences-> PyDev-> Interpreter-Python을 살펴 봐야합니다. 거기에 통역사 목록 (이름과 위치 포함)이 있습니다. 현재 프로젝트의 경우 예를 들어 / usr / bin / python에있는 인터프리터를 사용하고 있다면 아마도 / usr / bin / python -V를 실행하면 "Python 2.6.6"과 같은 결과를 얻을 수 있습니다. 그리고 Winston Ewert가 쓴 답이 있습니다.

( "New ..."버튼을 클릭하고 / usr / bin / python3을 "location"으로 지정하여 새 인터 퍼터를 추가 할 수 있습니다. 그런 다음 프로젝트 설정을 변경해야합니다 (Preferences-> PyDev-Interpreter / Grammar)).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.