2016-10-18 11 views
0

방금 ​​Python 2.7.12에서 xlrd를 사용하기 시작했으며 잘못된 작업을 파악할 수 없습니다. 데이터 형식이 일치하지 않는 것처럼 보입니다.Python 2.7 및 xlrd를 사용하여 Excel 스프레드 시트 행에서 특정 문자 시퀀스 검색

기본적으로 Excel 스프레드 시트 (.xlsx)에서 두 열의 일련의 행에 대한 문자 시퀀스를 찾고 있는데, 발견되면 해당 행 전체를 새 스프레드 시트로 복사하고 싶습니다. .

스프레드 시트와 같은 모양의 데이터 ...

R1: TheName_of_the_thing_XYZQ , Description of the thing with keyword1 
R1: TheName_of_another_thing_61PD , Description of the thing with keyword2 

그리고 여기 내가이 프로그램을 실행할 때

import xlrd 

search_for = ['XYZQ', 'keyword2', 'foo', 'FOO'] 

book = xlrd.open_workbook('csv-test.xlsx') 
i = 0 
j = 0 

sheet1 = book.sheet_by_index(1) 

for i in range(sheet1.nrows): 
    row = sheet1.row_values(i) 
    for j in range(len(row)): 
      if row[j] == search_for: 
       print 'found it!' 
      else: 
      print 'sorry' 

, 그것은 아무것도 발견하지 ... 내가 지금까지있어 무엇 search_for, 모든 행에 대해 '미안'을 인쇄합니다.

그래서 올바른 문서를 열고 각 행을 구문 분석하는 등의 작업을 수행합니다. 또한 cell_value 및 row_slice도 시도했습니다.

감사합니다!

귀하의 경우에는
if row[j] == search_for: 

, row[j] 유니 코드 형식으로 셀의 내용이며, 검색하려는 처음에 선언 된 목록입니다

답변

0

나는 당신의 오류가이 라인라고 생각합니다.

if u'TheName_of_the_thing_XYZQ' == ['XYZQ', 'keyword2', 'foo', 'FOO']: 

을 작동하지 않습니다

즉, 예를 들어,이 상황이있다.

searc_for 목록의 루프를 다음과 같이 수정하고 단일 셀에 목록의 요소 중 하나가 포함되어 있는지 확인합니다.

import xlrd 
search_for = ['XYZQ', 'keyword2', 'foo', 'FOO'] 
book = xlrd.open_workbook('test.xlsx') 
sheet = book.sheet_by_index(0) 

for idx in range(sheet.nrows): 
    row = sheet.row_values(idx) 
    name = row[0] 
    description = row[1] 
    print "==== row number {} ====".format(idx + 1) 
    for key in search_for: 
     if key in name: 
      print "in 'name' column, found {}".format(name) 
     if key in description: 
      print "in 'description' column, found {}".format(name) 

나를 완벽하게 작동

+0

, 지오다노 알려주세요! 고맙습니다! 필자가해야 할 일은 두 열 중 하나에서 일치하는 항목이 발견되면 해당 행의 두 열을 다른 스프레드 시트에 복사하려고합니다. 나는 그걸 알아낼 수 있다고 생각하지만, 빠른 생각이 있으면 알려주세요! –

+0

당신을 도와 주어서 기쁩니다! btw, Excel 파일을 작성하려면 xlsxwriter 패키지를 사용할 수 있습니다. 간단하며 예제 나 튜토리얼을 온라인에서 쉽게 찾을 수 있습니다. 문제가 생기면 언제든지 twitter/github (내 프로필 참조)에 저에게 연락하십시오. – Giordano