2014-02-24 2 views
1

non_int_ram_var에있는 텍스트를 trial.txt에 검색하고 있습니다. non_int_ram_var은 기본적으로 유니 코드 인 Excel 시트에서 데이터를 가져옵니다. 따라서 str으로 입력하면 trial.txt 유형이 non_int_ram_var과 일치합니다. 그러나 통제가 if var in line:에 들어 가지 않습니다. var이 텍스트 파일의 줄 중 하나에 있음을 교차 검증했습니다. 나는 실수를 저질렀을지도 모른다. 아무도 나에게 제안을 줄 수 있습니까?'str'배열을 문자열 파일에서 검색합니다.

from xlrd import open_workbook 
import unicodedata 
work_book= open_workbook("C:\\Users\\E542639\\Desktop\\non_sram_mem\\SEU_MBU_FINAL_VARIABLE_LIST.xls"); 

# reading xls file for non_int sram.............. 
non_int_ram_var = [] * 376 
row=1 

for sheet in work_book.sheets(): 
    if "Data" == sheet.name : 
     print sheet.nrows, sheet.ncols 
     while row < sheet.nrows: 
      if "int_sram" != sheet.cell(row,5).value: 
       if "file name only" != sheet.cell(row,7).value : 
        non_int_ram_var.append(str(sheet.cell(row,1).value)) 
      row=row + 1 

# checking variable in mapfile......... 

map_file = open("C:\\Users\\E542639\\Desktop\\non_sram_mem\\trial.txt", "r") 
non_categorized = open("C:\\Users\\E542639\\Desktop\\non_sram_mem\\non_categorized.txt","w") 

print "processing..." 

for var in non_int_ram_var: 
    while True: 
     line = str.encode(map_file.readline()) 
     if not line: break 

     if var in line: 
      print "control here" 
      non_categorized.writelines(line) # write won't work 

print 'done!!!' 

map_file.close() 
non_categorized.close() 

=========================================== =================================

다음 반복에서 파일 끝까지 읽은 후 커서가 파일의 시작 부분에 오지 않았습니다. 그건 내 실수 였어. 고마워, UR 제안이 길을 보여 주. 이것은 내가 지금하고 잘한 일이다.

하지 라인의 경우

: map_file.seek (0) 휴식

+0

당신이 조건 경우 확인하기 전에'line'와'var'의 값이 무엇인가를 확인하시기 바랍니다 것입니다 시도 할 수 있다고 생각? 'unicode'에서'str'을 검사하면 작동 할 것입니다. – Nilesh

답변

0

파이썬은 기본적으로 str을 객체로 파일을 읽습니다.

난 당신이

for line in map_file: 
    if var in line: 
     print "control here" 
     ... 
+0

다음 반복에서 파일의 끝까지 읽은 후 커서가 파일의 시작 부분에 오지 않았습니다. 그건 내 실수 였어. 고마워, UR 제안이 길을 보여 주. 이것은 내가 지금하고 잘한 일이다. if line : map_file.seek (0) break –

관련 문제