2014-10-14 4 views
0

아래 코드에서 항상 오류 ValueError: need more than 1 value to unpack가 표시됩니다. 그것은 내용의 5 개의 다른 선과 더불어 txt file에서 읽고있다. 그래서 명확히 그것은 1 이상의 선을 가지고있다.Python에서 압축을 풀 때 ValueError

with open("People.txt", 'r') as inFile: 
    for line in inFile: 
     ip,user,password = line.strip().split(',') 

텍스트 파일은 다음과 같습니다

ip,username,password 
+0

당신은 아마 3 개 이상의 값을 분할하고, 이것은 무엇 파이썬 버전? –

+5

파일에 빈 줄이 있습니까? 'line.strip(). split (',')'을 출력하면 어떻게됩니까? – jonrsharpe

+1

line.strip(). split (',') 실제로 반환 된 테스트를 제안하십시오 – mdurant

답변

-3

하면이 파일의 끝에 줄 바꿈을 가질 수있다. 당신은 그것을 예를 들면 더 강력하게 할 수 있습니다.

with open("People.txt", 'r') as inFile: 
    for line in inFile: 
     if line.count(',') == 2: 
      ip,user,password = line.strip().split(',') 
0

의견은 here에 @parchment로 대답했습니다.

그런 다음 빈 줄이 문제입니다. 빈 행에 대한 점검을 추가해야합니다. - 양피지

샘플 유용한 조리법 :

In [17]: with open("src.txt") as f: 
    ...:  for f_ in f: 
    ...:   if f_.strip(): # One quick way to check for blank lines. 
    ...:    one_,two_ = f_.strip().split(",") 
    ...:    print one_, two_ 
foo bar 
spam grok 

In [18]: 
+0

내 생각에 내 것이 더 강력합니다. 우리는 쉼표로 갈라지기 때문에 적어도 세 가지 값을 풀어야합니다. 입력 데이터가 만족스럽지 않으면 포장 풀기가 실패합니다. – wenzul

+0

위의 내용이 입력을 만족하지 않는 것은 아닙니다. 여기서 핵심은 빈 줄을 식별하는'f.strip()'의 사용법입니다. 입력의 최종 형태 또는 사용자가 그것을 다루는 방식이 무엇이든, 어쨌든 OP에서 상세히 설명되지 않은 접근 방식의 일부입니다. 한 줄에 2 쉼표보다 작거나 더 많은 가능성이 있다는 명확한 정보는 없습니다. 또한 커뮤니티 위키로 게시되었습니다. 어쨌든 포인트 *가 아닙니다. – Manhattan

+0

충분합니다. 위키 항목도 보지 못했습니다. – wenzul

관련 문제