2016-11-03 6 views
-1

파이썬에서 '분할'을 사용하여 여기에있는 모든 정보와 혼동을 느낍니다. 기본적으로 스프레드 시트 (두 개의 열이있는)를 열고 첫 번째 열은 x로, 두 번째 열은 y로 사용하고 두 번째 열은 y로 입력 한 다음 x-y 평면에 표시합니다. 두 개의 매개 변수를 얻기 위해 Excel에서 파이썬으로 분할 사용

은 내가 (X, Y)로 엑셀의 각 줄을 잘라 line.splitlines을 사용하는 것이라고 생각하지만 난

'ValueError: need more than 1 value to unpack' 
  • 나는 이것이 무엇을 의미하는지 모르는가 계속?

    0  0.049976 
    0.01 0.049902 
    0.02 0.04978 
    0.03 0.049609 
    0.04 0.04939 
    0.05 0.049123 
    0.06 0.048807 
    

    나는 것와 예를 들어

    def plotMo(filename, xdir): 
        infile = open(filename) 
        data = [] 
        for line in infile: 
         x,y = line.splitlines() 
         x = float(x) 
         y = float(y) 
         data.append([x,y]) 
        infile.close() 
        return data 
    plt.plot(x,y) 
    

    : 아래

은 (xdir 초기 내 질문의 다른 부분에 대한 조건이다), 지금까지 작성한 것입니다 비행기의 첫 번째 점을 (0, 0.049976), 두 번째 점을 (0.01, 0.049902)로하고 싶습니다.

답변

1

x,y = line.splitlines()은 현재 줄을 여러 줄로 나눕니다.

splitlines은 요소 1 개만 반환하므로 파이썬에서 y에 할당 할 값을 찾을 수 없으므로 오류가 발생합니다.

매개 변수가 지정되지 않은 경우 x,y = line.split()은 하나 이상의 공백 (예 : awk)에 따라 줄을 나눕니다.

그러나 그것은 형식에 따라 달라집니다

items = line.split() 
if len(items)==2: x,y = items 

그것을 요약하면 : 빈 줄이있는 경우 당신은 쓰기의 어떤 시점에서 문제를 "압축"거야 그래서 안전하고 잘못된 줄을 건너 뛸 당신의 루틴을 작성하는 더 파이썬, 위, 짧은 & 안전한 방법은 다음과 같습니다

def plotMo(filename): 
    with open(filename) as infile: 
     data = [] 
     for line in infile: 
      items = line.split() 
      if len(items)==2: 
       data.append([float(e) for e in items]) 
    return data 

(어쩌면 더 응축 될 수 있지만, 그 선발에 좋은)

+0

내가 원래 사용'X, Y = line.split()'하지만 동일한 오류가 발생합니다. – Emma

+0

내 편집을 참조하십시오. 파일에 빈 줄이 들어 있으면 (예 : 끝에, 매우 일반적입니다) 방금 전에했던 것처럼 필터를 사용해야합니다. –

+0

또 다른 파이썬 적 방법으로 'ValueError : 문자열을 부동으로 변환 할 수 없습니다'라고 말한 것입니다 - 이것은 관련된 문제이거나 다른 문제입니까 – Emma

관련 문제