从文本文件读取时的Unicode编码
我希望你能帮忙。
我正在尝试检查一个字符串是否在一个叫做 PasswordList 的文本文件中。这是我为此写的代码:
Password = input('Enter a password: ')
with open('PasswordList.txt') as f:
Found = False
for line in f:
if Password in line:
print(line)
Found = True
if not Found:
print('Password is not in list')
如果我输入像字母 "e" 这样的字符,它会返回包含这个字母的所有行,直到它到达第 4583 个位置时出现错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 4853: ordinal not in range(128).
我猜这可能跟 ascii 和 unicode 的编码有关,因为 Python 可能在尝试用 ascii 编码来解码一个 unicode 字符?
如果我尝试
print (str((sys.getdefaultencoding())))
那么我得到的默认编码是 "utf-8"。
我现在卡住了,我该怎么办?
相关文章:
- 暂无相关问题
2 个回答
3
使用 io
模块打开文件:
import io
with io.open('PasswordList.txt', encoding='cp1252') as f:
...
不过,你需要知道数据的编码格式是什么。文件本身通常不包含这些信息,你得知道它是怎么创建的。