2015-09-08 4 views
0

У меня есть проблема с этим кодом, это не сравнение строк, и я не знаю, где еще я могу посмотреть, чтобы знать эту проблему:ошибка Python при сравнении строк

Пожалуйста, кто-нибудь помочь мне, он читает де файлы , все есть, но это не сравнить

# strings.py 
def leerArchivo(nombre_archivo): 
    archivo=open(nombre_archivo,'r') 
    datos = archivo.read() 
    datos_separados = datos.split() 
    archivo.read() 
    archivo.close() 
    return datos_separados 

def leerArchivo_Lineas(nombre_archivo): 
    archivo=open(nombre_archivo,'r') 
    lineas = list(archivo) 
    return lineas 
def estaElementoEn(elemento,lista): 
     for token in lista: 
       print("Comparando ",type(token)," con: ",type(elemento)) 
       ## HERE IT'S NEVER COMPARING!! 
       if token == elemento: 
         return True 
     return False 
def esNombre(palabra,lista): 
     if palabra[0]=='_': 
       for i in range(1,len(palabra)): 
         letra = palabra[i] 
         encontro=False 
         j=0 
         while j<len(lista) and not encontro: 
           if letra == lista[j]: 
             encontro=True 
           j=j+1 
         if not encontro: 
           return False 
       return True 
     return False 

##1. Leer archivos: 
palabrasReservadas = leerArchivo_Lineas('palabrasReservadas.txt') 
tiposDatos = leerArchivo_Lineas('tiposDatos.txt') 
simbolos = leerArchivo_Lineas('simbolos.txt') 
simbolosNombres = leerArchivo_Lineas('simbolosNombres.txt') 

##2. Leer lineas archivo con el codigo 
codigo = leerArchivo('codigo.txt') 
errores =0; 
## Lee cada línea del archivo. 
for i in range(0,len(codigo)): 
     palabras = codigo[i].split(' ') ## Separa cada elemento de la linea 
     for palabra in palabras: 
       if estaElementoEn(palabra,tiposDatos): 
         ##print ("Error en la línea: ",i+1," en el elemento: ",palabra) 
         print("ESTA") 
+0

Можете ли вы привести примеры какой токен и элемент выглядят. Пример того, как они называются. –

+0

Также, если вы можете дать распечатку. – xdhmoore

ответ

2

Вопрос заключается в том, что при чтении файлов и создать список из него, как -

def leerArchivo_Lineas(nombre_archivo): 
    archivo=open(nombre_archivo,'r') 
    lineas = list(archivo) 
    return lineas 

в новой строки в конце все еще присутствуют в каждом Elemen t списка. Так что, скорее всего, когда вы делаете сравнение, вы сравниваете против строки с символом новой строки в нем, что-то вроде -

'string\n' 

Вы можете отогнать оба элемента перед тем comparing-

def estaElementoEn(elemento,lista): 
     for token in lista: 
       print("Comparando ",type(token)," con: ",type(elemento)) 
       ## HERE IT'S NEVER COMPARING!! 
       if token.strip() == elemento.strip(): 
         return True 
     return False 
Смежные вопросы