我正在使用python进行测试,并为任务创建此代码 我需要代码来读取两个文件,将第一个文件从大到小排列,然后查看另一个文件中的文件,然后创建另一个文件,两个文件中都重复该文件并进行排序 示例:
第一个文本:
Git-gud,-32
Hogwarts Great hall Wifi,-67
God is my rock,-56
Interwebz,-75
OptimusPrime,-32
gg-wp,-53
UdeS-Alumnos,-90
第二文本:
Que-sucede
Get-off-my-lawn
Git-gud
gg-wp
All the pancakes
My-name-is-lucifer
Optimus-prime
Hogwarts Great hall Wifi
第三文本:
Git-gud,-32
OptimusPrime,-32
gg-wp,-53
Hogwarts Great hall Wifi,-67
当我尝试使用第三个文件的网络创建列表时,出现错误
我不知道怎么了
def redes(contenido, guardadas):
redes=[]
i=0
while i<len(contenido):
j=0
while j<len(guardadas):
if contenido[i][0]==guardadas[j]:
redes.append(contenido[i])
j=j+1
i=i+1
return redes
启动代码时出现此错误
Traceback (most recent call last):
File "C:/Users/basty/Desktop/all/Guia y soluciones/textos/Wi-Fi/1.py", line 66, in <module>
disponibles=redes(redesOrdenadas, guardadas)
TypeError: 'list' object is not callable
这是我的代码
#Wi-Fi
#Función que lee los archivos
def leer(texto):
texto=texto+'.txt'
archivo= open(texto,'r')
contenido= []
for linea in archivo:
contenido.append(linea.strip('\n'))
archivo.close
return contenido
#Función quitar las comas
def sinComas(contenido):
i=0
sinComas=[]
while i <len(contenido):
sinComas = sinComas + [contenido[i].split(',')]
i=i+1
return sinComas
#Función ordenar por señal
def ordenar(contenido):
i=0
while i<len(contenido):
j=i+1
while j<len(contenido):
if int(contenido[i][1])<int(contenido[j][1]):
aux=contenido[i]
contenido[i]=contenido[j]
contenido[j]=aux
j+=1
i+=1
return contenido
#Función guardar redes disponibles para conectar
def redesDisponibles(contenido, guardadas):
redes=[]
i=0
while i<len(contenido):
j=0
while j<len(guardadas):
if contenido[i][0]==guardadas[j]:
redes.append(contenido[i])
j=j+1
i=i+1
return redes
#Función agregar comas
def agregarComas(redes):
i=0
conComas=''
escribir=[]
while i<len(redes):
j=0
while j<len(redes[i]):
conComas=','.join(redes[i])
j=j+1
escribir.append(conComas+'\n')
i=i+1
return escribir
#Función escribir
def escribir(texto):
return True
#Bloque Principal
#Entrada
redesEncontradas=leer('signal-strenght')
guardadas= leer('networks')
#Proceso
sinComas=sinComas(redesEncontradas)
redesOrdenadas=ordenar(sinComas)
disponibles=redes(redesOrdenadas, guardadas)
conComas=agregarComas(disponibles)
答案 0 :(得分:0)
Mike Scotty指出了您的主要问题:给var命名与方法相同。我还建议这样的列表理解:
return [x for x in contenido if x in guardadas]
消除了对命名变量的需求。
如果我提供了文本输入,则只需执行以下操作:
t1 = '''Git-gud,-32
Hogwarts Great hall Wifi,-67
God is my rock,-56
Interwebz,-75
OptimusPrime,-32
gg-wp,-53
UdeS-Alumnos,-90'''
和
t2 = '''Que-sucede
Get-off-my-lawn
Git-gud
gg-wp
All the pancakes
My-name-is-lucifer
Optimus-prime
Hogwarts Great hall Wifi'''
然后
result = [x for x in t1.split('\n') if x.split(',')[0] in t2.split('\n')]
结果如下:
['Git-gud,-32', 'Hogwarts Great hall Wifi,-67', 'gg-wp,-53']