与Python的巧合列表

时间:2014-02-09 00:08:19

标签: python

所以,我有各种txt文件,里面填充了按列表组织的单词,我想创建一个文件,其中包含每个txt文件的元素,这些文件也在另一个txt文件中。我试过这个:

    cadena = []
    cadena_dos = []
    seccion = ""
    filename_LISTA = "LISTA_FINAL.txt"
    linea_vacia = "\n"
    espaciador = "----------------------------------------------\n"
    cacho = "     "
    repeticiones = []
    cachito = " | "
    inicio = "Is also in "
    espacio = ", "

    fe = open(filename_LISTA, "w")

    nombres = ["ONE", "TWO", ... "ELEVEN"]

    for i in range (0, len(nombres)):

        filename = nombres[i]
        filename_a = filename + ".txt"
        filename_b = filename + "\n"

        linea = str(cacho)
        fe.write(linea)
        linea = str(nombres[i])
        fe.write(linea)
        linea = str(linea_vacia)
        fe.write(linea)
        linea = str(linea_vacia)
        fe.write(linea) 

        with open(filename_a) as f:
            data = f.readlines()


            for n, line in enumerate(data, 1):
                cadena.insert(n-1, line.rstrip())
                normal = str(cadena [n-1])


                for p in range (1, len(nombres)):

                    filename_dos = nombres[p]
                    filename_a_dos = filename + ".txt"

                    if filename_a != filename_a_dos:


                        with open(filename_a_dos) as t:
                            data = t.readlines()

                        for r, line in enumerate(data, 1):    
                            cadena_dos.insert(n-1, line.rstrip())
                            normal_dos = str(cadena_dos [n-1])


                            if normal == normal_dos:  
                                repeticiones.append(filename_dos)

             if len(repeticiones) > 0:

                    linea = normal
                    fe.write(linea)
                    linea = str(cacho)
                    fe.write(linea)
                    linea = str(cachito)
                    fe.write(linea)
                    linea = str(inicio)
                    fe.write(linea)
                    for cont in range (0, len(repeticiones)):

                        linea = str(repeticiones[cont])
                        print repeticiones[cont]
                        fe.write(linea)
                        if cont < len(repeticiones):
                            linea = str(espacio)
                            fe.write(linea)
                        else:
                            linea = str(linea_vacia)
                            fe.write(linea)

                else:
                    linea = str(linea_vacia)
                    fe.write(linea)

                repeticiones = []


            linea = str(linea_vacia)
            fe.write(linea)
            linea = str(espaciador)
            fe.write(linea)
            linea = str(linea_vacia)
            fe.write(linea)

    fe.close()

但没有做任何事情。问题是,如果我将线路延长

"filename_a != filename_a_dos:"

程序开始运行但开始在同一个txt文件中找到巧合。任何人都可以帮忙做到这一点吗?

2 个答案:

答案 0 :(得分:0)

您使用外循环filename_a_dos创建filename值,而不是内循环filename_dos。这意味着filename_a_dos将始终与filename_a相同,因为它们都是filename + ".txt"

您可以使用itertools.combinations进一步改善您的循环,而不是在文件名列表上循环两次,但这是一个更大的变化,与您当前遇到的问题没有直接关系。

答案 1 :(得分:0)

多数民众赞成因为filename_a和filename_a_dos的值始终相同,所以内容

  

filename_a!= filename_a_dos:

不会工作。

我想你可能意味着

  

filename_a_dos = filename_dos +“。txt”