簡體   English   中英

比較字符串時出現Python錯誤

[英]Python error when comparing strings

我的這段代碼有問題,它沒有比較字符串,而且我不知道還能在哪里找到問題:

請有人幫助我,它讀取文件,所有內容都在其中,但無法比較

   # 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")

問題是,當您讀取文件並從中創建列表時,該列表為-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM