Python dict.keys()具有该键,但其行为与未具有该键一样

2024-06-28 11:17:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在替换Excel中的许多值,因此我有一个包含数百个键的字典,但是当一个键有斜杠(/)时,它不会输入if

如您所见,我尝试使用doble、//,并在前面添加r,使其成为文字

当我在dict.keys()中使用is(“stringwith/slash”)时,我得到一个True,但当我运行程序时,它们被跳过,就好像它们不存在一样

import xlwt
import xlrd


dictForReplacement={}


for i in range(0,101):
    x = "Estigfend" + str(i) + str(i)+ " puntos de 100"
    dictForReplacement[x] = str(i)
    x = "Estigfend" + str(i) + str(i)+ " puntos de 100Completada con retraso"
    dictForReplacement[x] = str(i)
    x = "Estigfend" + str(i) + str(i)+ " puntos de 100Presentada de nuevo"
    dictForReplacement[x] = str(i)
    x = "Estigfend" + str(i) + str(i)+ " puntos de 100Borrador"
    dictForReplacement[x] = str(i)    
    x = "Estigfend" + str(i) + str(i)+ " puntos de 100Sin entregar"
    dictForReplacement[x] = str(i)    
    x = "Estigfend" + str(i)+"/100" + str(i)+ " puntos de 100Sin entregar"
    dictForReplacement[x] = str(i)    
    x = "Estigfend" + str(i)+"/100" + str(i)+ " puntos de 100"
    dictForReplacement[x] = str(i)  

dictForReplacement[r"EstigfendSin entregar"] = "NP"



dictForReplacement["EstigfendTarea asignada"] = "TA"


#here is the problem, the number was in case I founded the solution

dictForReplacement[r"Estigfend /100Sin calificación"] = "NP 00"
dictForReplacement[r"Estigfend /100Sin calificación"] = "NC 0"
dictForReplacement["Estigfend //100Sin calificación"] = "NC 1"
dictForReplacement[r'Estigfend //100Sin calificaciónCompletada con retraso'] = "NC 2"
dictForReplacement['Estigfend /100Sin calificaciónCompletada con retraso'] = "NC 3"
dictForReplacement[r"Estigfend /100Sin calificaciónCompletada con retraso"] = "NC 4"
dictForReplacement[r"Estigfend /100Sin calificaciónBorrador"] = "NC 5"



dictForReplacement["Estigfend /100Sin calificación"] = "NP" 

###################################################
#heres the if


ExcelNewName = "AAA"
########################################## Name of Excel to be modified
workbook = xlrd.open_workbook('Intento Calificaciones clear.xlsx')
sheet = workbook.sheet_by_name('Hoja1')

#write the data into new Excel file:
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet('Hoja1')


for i in range(sheet.nrows):
    
    data = [sheet.cell_value(i, col) for col in range(sheet.ncols)]

    for index, value in enumerate(data):

        if value in dictForReplacement.keys():
            new_sheet.write(i, index, str(dictForReplacement.get(value)))
        else:
            new_sheet.write(i, index, value)
            
            
new_workbook.save(ExcelNewName+'.xls')

这是我没有Ktinder的代码,因为我知道这里不需要它

现在你也可以运行它了

编辑4:接下来的3行错了 Idk如何在此处添加excel文件,最大的问题是带/的字符串,因此只需创建一个页面并创建一个单元格即可: 加利福尼亚州埃斯蒂芬德/100

edit2:有人说excel可能在添加其他东西,我会调查一下

编辑3: add a print to see value and error, same string


Tags: theinnewforvaluedeconsheet
1条回答
网友
1楼 · 发布于 2024-06-28 11:17:13

是看不见的人物

我的错误是,dict.keys()显然可以正常工作,但当打印没有键的值时(当我知道我有所有可能的选项作为键时),我看到它们看起来就像我的键,但由于看不见的字符,它们不一样

我更改了部分代码,使用else获得所有错误值的列表,然后在此列表的for中应用print(repr(value))来查看不可见的字符

看到这个,

Result of print(repr(value)) using bad values

所以我的Excel很奇怪,正如@CollinHeist之前在评论中所说的,它做到了

dictForReplacement[r"Estigfend\xa0/100Sin calificación"] = "NP"

谢谢评论

相关问题 更多 >