我对此代码有疑问,它没有比较字符串,我也不知道在哪里可以看到问题:
请有人帮助我,它读取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")
答案 0 :(得分:2)
问题在于,当您从中读取文件并创建列表时 -
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