代码:
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
答案 0 :(得分:4)
您正在阅读csv
个文件,这些文件是 text 文件。所以你需要编码而不是二进制模式。
所以你不应该使用rb
打开它们(建议在Python 2中使用csv
模块时这样做,但在其他情况下它是无关紧要的。)
只需使用纯文本模式:
open("C:/Users/Nouros/Desktop/Thesis/english.csv","r", encoding='utf8').read()
我更喜欢使用csv
模块,以避免手动拆分线路和的cols:
import csv
with open(r"C:\Users\Nouros\Desktop\Thesis\english.csv","r", encoding='utf8') as f:
cr = csv.reader(f,delimiter=",") # , is default
rows = list(cr) # create a list of rows for instance
(请注意,csv模块建议在打开文件时使用newline=""
以便在Python 3中读取,但问题实际上是在编写文件时)
答案 1 :(得分:1)
根据定义,二进制模式不需要编码,因为您正在读取单个字节。只有在您想要阅读文本时,编码才有意义。不同的编码以不同方式处理二进制数据。对于某些编码,单个字节表示一个字符。对于其他人,字符可以是多个字节。这是编码的全部目的:将文本数据表示为字符。