2013-11-28 2 views
2

같은 줄에 질문과 답변이 포함 된 파일이 있습니다.이 파일을 분리하여 빈 목록에 추가하지만이 오류가 계속 발생합니다.
builtins.ValueError: need more than 1 value to unpackValueError : 줄을 분리하고 압축을 풀려면 값이 두 개 이상 필요합니다.

questions_list = [] 
answers_list = [] 

questions_file=open('qanda.txt','r') 


for line in questions_file: 
    line=line.strip() 

    questions,answers =line.split(':') 

    questions_list.append(questions) 
    answers_list.append(answers) 

답변

3

당신이 분할을 수행 할 때, 거기에는 : 없기 때문에 함수가 하나 개의 인수를 반환하지 2.이 아마 의미, 마지막 줄에 의해 발생하기 때문에 이것은 아마 당신이 마지막 줄에는 빈 공간 만 있습니다. 그래서 같이 : 당신이 볼 수 있듯이

>>> a = ' ' 
>>> a = a.strip() 
>>> a 
'' 
>>> a.split(':') 
[''] 

이 목록은 .split에서 반환하는 것은 단지 하나의 빈 문자열입니다.

enter image description here

우리는 다음과 같은 스크립트를 사용하려고 (val.txt를 위의 파일의 이름입니다) :

with open('val.txt', 'r') as v: 
    for line in v: 
     a, b = line.split(':') 
     print a, b 

그리고 그래서, 당신에게 데모를 보여주기 위해,이 샘플 파일입니다

Traceback (most recent call last): 
a b 

c d 
    File "C:/Nafiul Stuff/Python/testingZone/28_11_13/val.py", line 3, in <module> 

    a, b = line.split(':') 
e f 
ValueError: need more than 1 value to unpack 

디버거를 통해이 보는 노력 변수 line\n된다 :이 우리를 제공합니다 , 당신은 그것을 나눌 수 없습니다. 그러나

, 간단한 논리적 ammendment이 문제를 해결합니다 :

with open('val.txt', 'r') as v: 
    for line in v: 
     if ':' in line: 
      a, b = line.strip().split(':') 
      print a, b 
+0

답장을 보내 주셔서 감사합니다. 파일의 첫 번째 줄은 다음과 같습니다. 사용 가능한 메모리 양을 표시하는 명령은 무엇입니까? free ... 나는 위의 코드를 빨리 시도하고 어떻게되는지 확인합니다. – user3046660

+0

great now now ... thanks 도움말에 대한 답변 – user3046660

+0

@ user3046660이 답변으로 도움이 될 경우 언제든지 질문을 올리십시오. 질문에 대답이 있으면이 질문의 왼쪽에있는 체크 표시를 클릭하여 동의하십시오. –

3

line.split(':')은 분명히 하나 개의 요소가 아닌 두 사람과 함께 목록을 반환합니다.

따라서 결과를 및 answers으로 압축을 풀 수 없습니다. 예 :

>>> line = 'this-line-does-not-contain-a-colon' 
>>> question, answers = line.split(':') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: need more than 1 value to unpack 
2

시도 :

question, answers = line.split(':', maxsplit=1) 
question, __, answers = line.partition(':') 

은 또한 파이썬 3에서 당신이 뭔가 할 수 있습니다

question, *many_answers = line.split(':') 

을하는 모양 :

temp = line.split(':') 
question = temp[0] 
many_answers = tuple(temp[1:]) 
관련 문제