脚本文件的编码和读取文件的编码之间的差异

问题描述

我有一个用cp1250编码的.csv文件。我以为是这种情况,因为当我在Sublime Text中打开.csv文件时,选择cp1250是使我可以使用适当的字符查看文件的编码。
同样,文件为.csv的事实也无关紧要,因为尽管具有该扩展名,但其格式基本上是常规文本文件

我想要的是将文件的行与我在脚本中编写的一些字符串进行比较。

首先,我必须设置.py文件的编码,否则它将给我
import React from 'react'; function Note () { return ( <div> <button title='delete note' onClick={}>X</delete> <li> <input type='text'/> </li> </div> ) } export default Note

因此,我在第二行中添加Non-ASCII character '\x9a' in file C:\Users\lezal\Desktop\convertJournal.py on line 4,but no encoding declared(第一行是# coding=cp1250),该编码与.csv文件的编码相同。
我用#! python2用这种方式打开文件

io

当我打印特定行时,在终端内显示openedFile = io.open(file,encoding = "cp1250") allLines = openedFile.readlines()
我的文件Jan Mašek Pekařství s.r.o.

中也有此文件

但是,当我运行elif时,我得到了:

elif x == "Jan Mašek Pekařství s.r.o. "

我尝试将.py文件和.csv文件都转换为utf-8,这给我带来了相同的问题,只是字符不同。而且我还尝试将.csv文件转换为.txt,因为实际上是这样,但是结果是相同的。

任何建议都将受到高度赞赏!

解决方法

encoding放在open上时,Python使它读取的所有字符串都转换为Unicode。但是,您没有将其与if中的Unicode字符串进行比较,因此无法对其进行比较。只需更改行:

elif x == u"Jan Mašek Pekařství s.r.o. ":

您还应该考虑转换为Python 3。