代码:
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=""
,但实际上是在编写文件时的问题(
二进制模式根据定义不需要编码,因为您正在读取单个字节。仅当您想阅读文本时,编码才是相关的。不同的编码以不同的方式处理二进制数据。对于某些编码,单个字节代表字符。对于其他人来说,角色可能是多个字节。这是编码的全部目的:将文本数据表示为字符。