2014-03-26 2 views
0

Excel에서 가져온 일부 데이터를 처리하는 함수를 작성하고 싶습니다. 데이터는 기본적으로 Excel 열 (거래 ID)에 있습니다. 내 자신의 편의를 위해, 나는 Excel에서 열을 복사하여 붙여 넣기하여 raw_input을 사용하여 저장하고 그 함수를 실행한다고 생각했습니다.Excel에서 열 복사 - 붙여 넣기 오류

그러나 무엇을해도 오류가 발생합니다. 실제로 데이터를 가져 오는 첫 단계에 갇혀 있습니다. 각 항목이 새 줄에 있기 때문에 그 이유가 확실합니다. 열을 행으로 조 변경하는 Excel 옵션, 오류 없음). 나는 시도하고 작업 할 샘플 문자열, 예를 들어 설정하기를 원한다면

그래서, 예를 들어, :

some_string = "014300071432Gre 
014300054037Col 
014300065692ASC" 

을 (이 인 Excel에서 열에서 붙여 넣을 때 당신이 얻을 서식) 및 단지 some_string 전화, 내가 얻을 것 :

File "<stdin>", line 1 
    al = "014300071432Gre 
         ^
SyntaxError: EOL while scanning string literal 

내가 .split()와 함께 행 구분을 제거하려하지만 나는 또한 내가 본 삼중 따옴표를 시도

를 작동하지 않았다 여러 스레드에서 제안했지만 그 중 하나가 작동하지 않았다. 이 없으면 트리플 따옴표가 사용되었다고 생각했기 때문에 더 혼란 스러웠습니다. 뭔가 평가할 파이썬이 필요합니다.

일부는 Sample Data in a Google doc입니다.

정말 도움이됩니다. 감사합니다.

답변

0
some_string = '''014300071432Gre 
014300054037Col 
014300065692ASC''' 
+0

이상하게 들리며, 이전 버전에서는 효과가 없었습니다. (1) raw_input과 함께 작동시키는 방법을 설명 할 수 있습니까? (2) 왜 삼중 따옴표로 작동하는지 설명하십시오. 나는 그들이 텍스트 블록을 주석으로 사용한다고 생각했다. 감사합니다. – Optimesh

+0

삼중 따옴표는 따옴표 자체를 포함 할 수있는 문자열을 나타냅니다. 당신은 그들과 함께 코드를 "주석 처리"할 수 있지만 단지 부작용입니다 (파이썬에서 문장으로 리터럴을 사용할 수 있으며 해석기는 아무 말도하지 않습니다). 삼중 따옴표로 묶인 문자열은 종종 함수의 문서화 문자열로도 사용됩니다. – x3al

+0

raw_input에 어떤 문제가 있는지 확실하지 않습니다. 따옴표 또는 아무거나 관계가 없습니다. – x3al

1

당신은 엑셀 데이터의 복사 열이 raw_input 사용에 어려움이 줄 바꿈이라고 맞아. 문제는 raw_input한 줄의입니다. official docs에서 : 프롬프트 인자가 존재하는 경우

에 raw_input ([프롬프트])
, 그것은 후행 개행없이 표준 출력에 기록된다. 그런 다음 함수는 입력에서 한 줄을 읽고 문자열로 변환하고 (후행 줄 바꾸기) 결과를 반환합니다.

정의에 따라 줄 바꿈 문자는 줄의 끝을 표시합니다. 따라서 Excel 데이터 열을 raw_input에 붙여 넣는 간단한 방법은 없습니다.


대부분의 경우 파이썬에서 Excel 데이터를 읽는 가장 좋은 방법은 단순히 Excel 파일을 직접 읽는 것입니다. 이것에 가장 적합한 패키지는 xlrd입니다. 통합 문서를 가정하면 myData.xls라는 이름의 당신은 A2을 읽을 수있다 : 첫 번째 시트에서 A5, 당신은 그 시점에서

import xlrd 

wb = xlrd.open_workbook('myData.xls') 
ws = wb.sheet_by_index(0) 
result = ws.col_values(0, 1, 5) 

같은 것을 할 것, result는 셀 값 (A2, A3의 4 요소 목록이 될 것입니다 , A4 및 A5).


당신이 진짜로 "Excel에서 셀 범위를 복사, 내 응용 프로그램에 붙여 넣기"사용자 인터페이스가 필요하면 그때는 아마 여러 행 텍스트 입력 상자가있는 GUI를 구축으로보고있다. 여기에는 파이썬에 포함 된 Tkinter부터 타사 라이브러리 (파이썬 용), 비 파이썬 GUI (입력 내용을 읽고 파이썬 프로그램에 전달할 수있는 한) 등 다양한 선택 항목이 있습니다.


편집 : 당신은 (그래서 전혀 붙여 넣기 단계를하지 않는다) 직접 클립 보드를 읽을 수 있습니다. 자세한 내용은 thesequestions을 참조하십시오. 이 질문에서 취한 가장 간단한 해결책은 Tkinter에 의존합니다 :

from Tkinter import Tk 

r = Tk() 
result = r.selection_get(selection='CLIPBOARD') 
r.destroy() 

위의 내용은 클립 보드가 이미 채워져 있다고 가정합니다. 즉, 흐름이

  1. 여러분의 프로그램과 같이 Excel에서 Excel에서
  2. 사용자 복사 선택을 선택을 복사하라는 메시지가 표시 될 것
  3. 사용자는 프로그램의 프롬프트에 응답
  4. (수 있도록 프로그램 클립 보드를 알 수는
  5. 프로그램이 원하는대로 프로그램이 result을 처리 result
  6. 에 클립 보드의 내용을 잡기 위해 위의 미리보기를 발행) 준비

더 복잡한 방법이 있지만 의심의 여지가 있지만 당신을 끌어들일만큼 충분해야합니다.

+0

어쩌면이 클립 보드와 함께 작업하여 어떤 방법을 성취 수 있을까? 예 : some_var = <코드가 실행되면 클립 보드에 무엇이 있습니까?>? – Optimesh

+1

@Optimesh : 좋은 생각. 나는이 접근법을 통합하기 위해 나의 대답을 편집했다. –

+0

도움을 주셔서 감사합니다 :) – Optimesh