Search code examples
pythonxlsxlrdxlwtis-empty

Python Code: What's Wrong... [Search .xls file, find parts of words of interest, test with .txt conents if it's an actual word of interest.]


import sys
import xlrd
import xlwt

oldstdout = sys.stdout

file1 = open("C:\\Users\\dell2\\AppData\\Local\\Programs\\Python\\Python35-32\\ANAkatTEST.txt", "r")
list1 = file1.readlines()
list1 = [j.rstrip('\n') for j in list1]

print("The operation initiated.\nPlease show patience, this may take a while...")
sys.stdout = open("C:\\Users\\dell2\\AppData\\Local\\Programs\\Python\\Python35-32\\ANAkat.txt", "w")

workbook = xlrd.open_workbook("C:\\Users\\dell2\\AppData\\Local\\Programs\\Python\\Python35-32\\mitroo-10032017.xls", encoding_override="cp1251")
worksheet = workbook.sheet_by_name("mitroo-10032017")


for i in range(21826):
    if "ελι" in worksheet.cell(i, 11).value or "ελι" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "ελαι" in worksheet.cell(i, 11).value or "ελαι" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "λάδ" in worksheet.cell(i, 11).value or "λάδ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "μέλ" in worksheet.cell(i, 11).value or "μέλ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "μελισ" in worksheet.cell(i, 11).value or "μελισ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "μέλισ" in worksheet.cell(i, 11).value or "μέλισ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "βότ" in worksheet.cell(i, 11).value or "βότ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "βοτάν" in worksheet.cell(i, 11).value or "βοτάν" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "βοταν" in worksheet.cell(i, 11).value or "βοταν" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Ελι" in worksheet.cell(i, 11).value or "Ελι" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Ελαι" in worksheet.cell(i, 11).value or "Ελαι" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Λάδ" in worksheet.cell(i, 11).value or "Λάδ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Μέλ" in worksheet.cell(i, 11).value or "Μέλ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Μελισ" in worksheet.cell(i, 11).value or "Μελισ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Μέλισ" in worksheet.cell(i, 11).value or "Μέλισ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Βότ" in worksheet.cell(i, 11).value or "Βότ" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Βοτάν" in worksheet.cell(i, 11).value or "Βοτάν" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    elif "Βοταν" in worksheet.cell(i, 11).value or "Βοταν" in worksheet.cell(i, 10).value:
        for j in list1:
         if j == worksheet.cell(i, 11).value or j == worksheet.cell(i, 10).value:
             print(worksheet.cell(i,0).value) 
             print("\n")
    else:
        continue

sys.stdout = sys.__stdout__
sys.stdout = oldstdout 

print("The names are ready and in the file ANAkat.txt\n)
input("Press ENTER to terminate.")

The above code returns no errors at all. But on completion, the txt produced is completely empty.. Previously I run the code:

import sys
import xlrd
import xlwt

print("The operation initiated.\nPlease show patience, this may take a while...")
sys.stdout = open("C:\\Users\\dell2\\AppData\\Local\\Programs\\Python\\Python35-32\\Onomata.txt", "w")

workbook = xlrd.open_workbook("C:\\Users\\dell2\\AppData\\Local\\Programs\\Python\\Python35-32\\mitroo-10032017.xls", encoding_override="cp1251")
worksheet = workbook.sheet_by_name("mitroo-10032017")

for i in range(21826):
    if worksheet.cell(i, 8).value == xlrd.empty_cell.value:
        print(worksheet.cell(i,0).value) 
        print("\n")
    else:
        continue

sys.stdout = sys.__stdout__
sys.stdout = oldstdout 

print("The names are ready and in the file ANAkat.txt\n")
input("Press ENTER to terminate.")

Which worked as expected and generated a .txt with all the wanted names from the .xls

Any ideas?

EDIT: The Excel file has 21826 rows and written content up to the M column. The code is supposed to read the .xls and check the K and L rows for parts of words of interest. Should one be found, it should then check if the current cell's words have one matching the contents of the ANAkatTEST.txt (many lines of words - 1 word per line)(All Greek). If there is a match, the first column of the current row's contents (names) should be printed in ANAkat.txt and then it should change the line before a new name is printed inside. The .xls contains both English and Greek words, if that matters at this point.

The list printed:

list1= ['ελιά', 'ελιάς', 'ελιές', 'ελιών', 'λάδι', 'λαδιού', 'ελαίου', 'έλαια', 'ελαίων', 'ελαιόλαδο', 'ελαιολάδου', 'ελαιόλαδου', 'ελαιπαραγωγός', 'ελαιοπαραγωγών', 'ελαιοπαραγώγων', 'ελαιοτριβία', 'ελαιοτριβίας', 'ελαιοπαραγωγή', 'ελαιοπαραγωγής', 'ελαιοπαραγωγική', 'ελαιοπαραγωγικών', 'ελαιοπαραγωγοί', 'ελαιοτριβοί', 'ελαιοτριβών', 'ελαιοτριβός', 'ελαιτριβού', 'μέλι', 'μελιού', 'μέλια', 'μελιών', 'μελισσοκομία', 'μελισσοκομίας', 'μελισσοκομιών', 'μελισσοκομική', 'μελισσοκομικής', 'μελισσοκόμος', 'μελισσοκόμου', 'μελισσοκόμων', 'μελισσοκόμοι', 'μελισσοκομικά', 'μελισσοκομικών', 'βότανο', 'βοτάνου', 'βότανα', 'βοτάνων', 'βοτανικά', 'βοτανικών', 'βοτανική', 'βοτανικής', 'βοτανικές', 'βοτανικών', 'βοτανοπαραγωγός', 'βοτανοπαραγωγού', 'βοτανοπαραγώγου', 'βοτανοπαραγωγοί', 'βοτανοπαραγωγική', 'βοτανοπαραγωγών', 'βοτανοπαραγώγων', 'βοτανοπαραγωγής', 'βοτανοπαραγωγή', 'βοτανοπαραγωγές', 'βοτανοπαραγωγούς', 'τυρί', 'τυριού', 'τυριά', 'τυριών', 'τυροκόμος', 'τυροκόμου', 'τυροκόμοι', 'τυροκόμων', 'τυροκομικά', 'τυροκομικών', 'τυροκομικό', 'τυροκομικού', 'Ελιά', 'Ελιάς', 'Ελιές', 'Ελιών', 'Λάδι', 'Λαδιού', 'Ελάιου', 'Ελαια', 'Ελαίων', 'Ελαιόλαδο', 'Ελαιολάδου', 'Ελαιόλαδου', 'Ελαιπαραγωγός', 'Ελαιοπαραγωγών', 'Ελαιοπαραγώγων', 'Ελαιοτριβία', 'Ελαιοτριβίας', 'Ελαιοπαραγωγή', 'Ελαιοπαραγωγής', 'Ελαιοπαραγωγική', 'Ελαιοπαραγωγικών', 'Ελαιοπαραγωγοί', 'Ελαιοτριβοί', 'Ελαιοτριβών', 'Ελαιοτριβός', 'Ελαιτριβού', 'Μέλι', 'Μελιού', 'Μέλια', 'Μελιών', 'Μελισσοκομία', 'Μελισσοκομίας', 'Μελισσοκομιών', 'Μελισσοκομική', 'Μελισσοκομικής', 'Μελισσοκόμος', 'Μελισσοκόμου', 'Μελισσοκόμων', 'Μελισσοκόμοι', 'Μελισσοκομικά', 'Μελισσοκομικων', 'Βότανο', 'Βοτάνου', 'Βότανα', 'Βοτάνων', 'Βοτανικά', 'Βοτανικών', 'Βοτανική', 'Βοτανικής', 'Βοτανικές', 'Βοτανικών', 'Βοτανοπαραγωγός', 'Βοτανοπαραγωγού', 'Βοτανοπαραγώγου', 'Βοτανοπαραγωγοί', 'Βοτανοπαραγωγική', 'Βοτανοπαραγωγών', 'Βοτανοπαραγώγων', 'Βοτανοπαραγωγής', 'Βοτανοπαραγωγή', 'Βοτανοπαραγωγές', 'Βοτανοπαραγωγούς', 'Τυρί', 'Τυριού', 'Τυριά', 'Τυριών', 'Τυροκόμος', 'Τυροκόμου', 'Τυροκόμοι', 'Τυροκόμων', 'Τυροκομικά', 'Τυροκομικών', 'Τυροκομικό', 'Τυροκομικού', 'ΕΛΙΑ', 'ΕΛΙΑΣ', 'ΕΛΙΕΣ', 'ΕΛΙΩΝ', 'ΛΑΔΙ', 'ΛΑΔΙΟΥ', 'ΕΛΑΙΟΥ', 'ΕΛΑΙΑ', 'ΕΛΑΙΩΝ', 'ΕΛΑΙΟΛΑΔΟ', 'ΕΛΑΙΟΛΑΔΟΥ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΟΣ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΩΝ', 'ΕΛΑΙΟΤΡΙΒΙΑ', 'ΕΛΑΙΟΤΡΙΒΙΑΣ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΙΚΗ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΗΣ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΙΚΗ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΙΚΩΝ', 'ΕΛΑΙΟΠΑΡΑΓΩΓΟΙ', 'ΕΛΑΙΟΤΡΙΒΟΙ', 'ΕΛΑΙΟΤΡΙΒΩΝ', 'ΕΛΑΙΟΤΡΙΒΟΣ', 'ΕΛΑΙΟΤΡΙΒΟΥ', 'ΜΕΛΙ', 'ΜΕΛΙΟΥ', 'ΜΕΛΙΑ', 'ΜΕΛΙΩΝ', 'ΜΕΛΙΣΣΟΚΟΜΙΑ', 'ΜΕΛΙΣΣΟΚΟΜΙΑΣ', 'ΜΕΛΙΣΣΟΚΟΜΙΩΝ', 'ΜΕΛΙΣΣΟΚΟΜΙΚΗ', 'ΜΕΛΙΣΣΟΚΟΜΙΚΗΣ', 'ΜΕΛΙΣΣΟΚΟΜΟΣ', 'ΜΕΛΙΣΣΟΚΟΜΟΥ', 'ΜΕΛΙΣΣΟΚΟΜΩΝ', 'ΜΕΛΙΣΣΟΚΟΜΟΙ', 'ΜΕΛΙΣΣΟΚΟΜΙΚΑ', 'ΜΕΛΙΣΣΟΚΟΜΙΚΩΝ', 'ΒΟΤΑΝΟ', 'ΒΟΤΑΝΟΥ', 'ΒΟΤΑΝΑ', 'ΒΟΤΑΝΩΝ', 'ΒΟΤΑΝΙΚΑ', 'ΒΟΤΑΝΙΚΩΝ', 'ΒΟΤΑΝΙΚΗ', 'ΒΟΤΑΝΙΚΗΣ', 'ΒΟΤΑΝΙΚΕΣ', 'ΒΟΤΑΝΙΚΩΝ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΟΣ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΟΥ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΟΙ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΙΚΗ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΩΝ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΗΣ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΟΥΣ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΗ', 'ΒΟΤΑΝΟΠΑΡΑΓΩΓΕΣ', 'ΤΥΡΙ', 'ΤΥΡΙΟΥ', 'ΤΥΡΙΑ', 'ΤΥΡΙΩΝ', 'ΤΥΡΟΚΟΜΟΣ', 'ΤΥΡΟΚΟΜΟΥ', 'ΤΥΡΟΚΟΜΟΙ', 'ΤΥΡΟΚΟΜΩΝ', 'ΤΥΡΟΚΟΜΙΚΑ', 'ΤΥΡΟΚΟΜΙΚΩΝ', 'ΤΥΡΟΚΟΜΙΚΟ', 'ΤΥΡΟΚΟΜΙΚΟΥ', 'ελια', 'ελιας', 'ελιες', 'ελιων', 'λαδι', 'λαδιου', 'ελαιου', 'ελαια', 'ελαιων', 'ελαιολαδο', 'ελαιολαδου', 'ελαιπαραγωγος', 'ελαιοπαραγωγων', 'ελαιοτριβια', 'ελαιοτριβιας', 'ελαιοπαραγωγη', 'ελαιοπαραγωγης', 'ελαιοπαραγωγικη', 'ελαιοπαραγωγικων', 'ελαιοπαραγωγοι', 'ελαιοτριβοι', 'ελαιοτριβων', 'ελαιοτριβος', 'ελαιτριβου', 'μελι', 'μελιου', 'μελια', 'μελιων', 'μελισσοκομια', 'μελισσοκομιας', 'μελισσοκομιων', 'μελισσοκομικη', 'μελισσοκομικης', 'μελισσοκομος', 'μελισσοκομου', 'μελισσοκομων', 'μελισσοκομοι', 'μελισσοκομικα', 'μελισσοκομικων', 'βοτανο', 'βοτανου', 'βοτανα', 'βοτανων', 'βοτανικα', 'βοτανικων', 'βοτανικη', 'βοτανικης', 'βοτανικες', 'βοτανικων', 'βοτανοπαραγωγος', 'βοτανοπαραγωγου', 'βοτανοπαραγωγου', 'βοτανοπαραγωγοι', 'βοτανοπαραγωγικη', 'βοτανοπαραγωγων', 'βοτανοπαραγωγων', 'βοτανοπαραγωγης', 'βοτανοπαραγωγη', 'βοτανοπαραγωγες', 'βοτανοπαραγωγους', 'τυρι', 'τυριου', 'τυρια', 'τυριων', 'τυροκομος', 'τυροκομου', 'τυροκομοι', 'τυροκομων', 'τυροκομικα', 'τυροκομικων', 'τυροκομικο', 'τυροκομικου', 'Ελια', 'Ελιας', 'Ελιες', 'Ελιων', 'Λαδι', 'Λαδιου', 'Ελαιου', 'Ελαια', 'Ελαιων', 'Ελαιολαδο', 'Ελαιολαδου', 'Ελαιπαραγωγος', 'Ελαιοπαραγωγων', 'Ελαιοτριβια', 'Ελαιοτριβιας', 'Ελαιοπαραγωγη', 'Ελαιοπαραγωγης', 'Ελαιοπαραγωγικη', 'Ελαιοπαραγωγικων', 'Ελαιοπαραγωγοι', 'Ελαιοτριβοι', 'Ελαιοτριβων', 'Ελαιοτριβος', 'Ελαιτριβου', 'Μελι', 'Μελιου', 'Μελια', 'Μελιων', 'Μελισσοκομια', 'Μελισσοκομιας', 'Μελισσοκομιων', 'Μελισσοκομικη', 'Μελισσοκομικης', 'Μελισσοκομος', 'Μελισσοκομου', 'Μελισσοκομων', 'Μελισσοκομοι', 'Μελισσοκομικα', 'Μελισσοκομικων', 'Βοτανο', 'Βοτανου', 'Βοτανα', 'Βοτανων', 'Βοτανικα', 'Βοτανικων', 'Βοτανικη', 'Βοτανικης', 'Βοτανικες', 'Βοτανικων', 'Βοτανοπαραγωγος', 'Βοτανοπαραγωγου', 'Βοτανοπαραγωγου', 'Βοτανοπαραγωγοι', 'Βοτανοπαραγωγικη', 'Βοτανοπαραγωγων', 'Βοτανοπαραγωγων', 'Βοτανοπαραγωγης', 'Βοτανοπαραγωγη', 'Βοτανοπαραγωγες', 'Βοτανοπαραγωγους', 'Τυρι', 'Τυριου', 'Τυρια', 'Τυριων', 'Τυροκομος', 'Τυροκομου', 'Τυροκομοι', 'Τυροκομων', 'τυροκομικα', 'τυροκομικων', 'τυροκομικο', 'τυροκομικου']

Solution

  • The problem is that the if statements are never True.
    That is because the words in the text file are separated by line breaks so j in list1 is equal to j\n whereas the values from excel are j only. Try print (list1) it will print something like ['word1\n','word2\n',..].

    So when you write for example if j==worksheet.cell(i, 11).value
    it is if "ελι\n" == "ελι" which is not true so it will not print it to the output file.

    Solution:
    Use rstrip() to remove the line breaks from the end of every word in list1:

    list1 = file1.readlines()
    # remove \n from j in list1
    list1= [j.rstrip('\n') for j in list1]