Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python代码:What';这是错的。。。[搜索.xls文件,查找感兴趣的单词的部分,如果它是实际感兴趣的单词,则使用.txt内容进行测试。]_Python_Xls_Xlrd_Xlwt_Is Empty - Fatal编程技术网

Python代码:What';这是错的。。。[搜索.xls文件,查找感兴趣的单词的部分,如果它是实际感兴趣的单词,则使用.txt内容进行测试。]

Python代码:What';这是错的。。。[搜索.xls文件,查找感兴趣的单词的部分,如果它是实际感兴趣的单词,则使用.txt内容进行测试。],python,xls,xlrd,xlwt,is-empty,Python,Xls,Xlrd,Xlwt,Is Empty,上面的代码完全不返回错误。但完成后,生成的txt完全为空。。 之前我运行代码: 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')

上面的代码完全不返回错误。但完成后,生成的txt完全为空。。 之前我运行代码:

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.")
它按预期工作,并生成了一个包含.xls中所有想要的名称的.txt

有什么想法吗

编辑:Excel文件有21826行,写入内容一直到M列。代码应该读取.xls并检查K行和L行中感兴趣的部分单词。如果找到一个,它应该检查当前单元格的单词是否与ANAkatTEST.txt的内容匹配(多行单词-每行1个单词)(全部为希腊语)。如果存在匹配项,则当前行内容(名称)的第一列应在ANAkat.txt中打印,然后应在内部打印新名称之前更改行。xls同时包含英语和希腊语单词,如果这一点很重要的话

名单如下:

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

问题是if语句从来都不是真的。
这是因为文本文件中的单词由换行符分隔,因此列表1中的j等于
j\n
,而excel中的值仅为
j
。尝试
print(list1)
它将打印类似
['word1\n'、'word2\n'、…]

因此,当您编写示例
时,如果j==sheet.cell(i,11).value

如果“ελι\n”==“ελι”不正确,则为
,因此不会将其打印到输出文件中

解决方案:
使用
rstrip()
删除列表1中每个单词末尾的换行符:

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

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。您没有为我们提供重现问题的输入,也没有提供失败运行的任何跟踪输出。我建议您将其编辑为您提供的输入文件的几行,或者将硬代码作为程序中的列表。还可以减少到只有2或3组关键字。插入跟踪打印语句以显示程序和数据流。@Prune的可能重复是否意味着您希望我上载用于重现问题的文件?我们需要您提供尽可能简洁重现问题的代码。这通常意味着您将输入代码替换为对所需变量的赋值,就像您对列表1所做的那样。对工作簿也这样做,我希望我们有一个可行的测试用例。这确实是一个问题!我试着在没有你命令的情况下打印列表,就像你说的那样。现在我已经添加了它,列表应该是一样的。但是,final.txt中仍然没有任何内容。。。也许还有其他原因。您是否使用任何类型的编码来读取代码中的非ascii字符?对我来说,我必须将这个代码
#-*-编码:utf-8-*-
添加到代码的第一行+我需要对xls文件中的非ascii字符值进行编码,如:
工作表.cell(I,11).value.encode('utf-8')
,并将它们写入文件。如果不清楚,我会给你看代码@如果你能举个例子,那就太好了看到excel文件后,我意识到了问题所在。第10列和第11列是一组单词,您可以将这些单词与j(只有一个单词)进行比较!因此,当然,如果j==worksheet.cell(i,11).value或j==worksheet.cell(i,10).value:
的所有if语句都将为false,并且不会向txt文件打印任何内容。尝试将
==
中的
更改为
@CrashPapathanasiouNote:对于单元格中的任何j,检查j的单元格值都将为真,即使它不是完全匹配的,例如当
j='string'
cell\u value='onestring'
-->
j的单元格值
为真@CrashPapathanasiou
list1 = file1.readlines()
# remove \n from j in list1
list1= [j.rstrip('\n') for j in list1]