如何解决二进制模式不需要编码参数



代码:

import nltk
eng_lish= open("C:/Users/Nouros/Desktop/Thesis/english.csv","rb", encoding='utf8').read()
bang_lish= open("C:/Users/Nouros/Desktop/Thesis/banglish.csv","rb", encoding='utf8').read()

问题:

Traceback (most recent call last):
File "C:/Users/Nouros/Desktop/Thesis/nltk_run_copy.py", line 3, in <module>
    eng_lish= open("C:/Users/Nouros/Desktop/Thesis/english.csv","rb",encoding="utf-8")
ValueError: binary mode doesn't take an encoding argument

您正在阅读 text 文件的csv文件。因此,您需要编码但不是二进制模式。

因此,您不应使用rb打开它们(建议在Python 2中使用csv模块时这样做,但在其他情况下是无关的(。

只使用纯文本模式:

open("C:/Users/Nouros/Desktop/Thesis/english.csv","r", encoding='utf8').read()

我更喜欢使用csv模块,以避免线路的手动拆分&amp;科尔斯:

import csv
with open(r"C:UsersNourosDesktopThesisenglish.csv","r", encoding='utf8') as f:
     cr = csv.reader(f,delimiter=",") # , is default
     rows = list(cr)  # create a list of rows for instance

(请注意,CSV模块建议在Python 3打开文件时使用newline="",但实际上是在编写文件时的问题(

二进制模式根据定义不需要编码,因为您正在读取单个字节。仅当您想阅读文本时,编码才是相关的。不同的编码以不同的方式处理二进制数据。对于某些编码,单个字节代表字符。对于其他人来说,角色可能是多个字节。这是编码的全部目的:将文本数据表示为字符。

相关内容

最新更新