比较字符串时出现Python错误

比较字符串时出现Python错误,python,string,Python,String,我对这段代码有一个问题,它没有比较字符串,我不知道还能从哪里找到问题: 请有人帮帮我,它读de文件,一切都在那里,但它不比较 # strings.py def leerArchivo(nombre_archivo): archivo=open(nombre_archivo,'r') datos = archivo.read() datos_separados = datos.split() archivo.read() archivo.close()

我对这段代码有一个问题,它没有比较字符串,我不知道还能从哪里找到问题:

请有人帮帮我,它读de文件,一切都在那里,但它不比较

   # 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")
#strings.py
def leerArchivo(名称):
archivo=打开(名称为'r')
datos=archivo.read()
datos_separados=datos.split()
archivo.read()
archivo.close()
返回datos_separados
定义leerArchivo_Lineas(名称):
archivo=打开(名称为'r')
lineas=列表(archivo)
回归线
def estaElementoEn(elemento,lista):
对于lista中的令牌:
打印(“Comparendo”,类型(标记),“con:”,类型(elemento))
##在这里,它永远不会比较!!
如果令牌==elemento:
返回真值
返回错误
def esNombre(帕拉布拉、利斯塔):
如果palabra[0]=='''''
对于范围(1,len(palabra))中的i:
莱特拉=帕拉布拉[i]
encontro=错误
j=0

而问题在于,当您读取文件并从中创建列表时-

def leerArchivo_Lineas(nombre_archivo):
    archivo=open(nombre_archivo,'r')
    lineas = list(archivo)
    return lineas
末尾的换行符仍然存在于列表的每个元素中。因此,在进行比较时,最有可能的情况是,与包含换行符的字符串进行比较,比如-

'string\n'
您可以在比较之前剥离这两个元素-

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

你能举例说明token和elemento是什么样子的吗。如何调用它们的示例。也可以给出打印输出。