Código:
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()Problema:
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 argumentestás leyendo archivos csv , que son archivos de texto . Entonces necesita codificación pero no modo binario.
Por lo tanto, no debe usar rb para abrirlos (se recomienda hacerlo cuando se usa el módulo csv en Python 2, pero es irrelevante en otros contextos).
Simplemente use el modo de texto sin formato:
open("C:/Users/Nouros/Desktop/Thesis/english.csv","r", encoding='utf8').read() Yo preferiría usar el módulo csv , para evitar la división manual de líneas y columnas:
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 (tenga en cuenta que el módulo csv recomienda usar newline="" al abrir archivos para leer en Python 3, pero los problemas son en realidad al escribir archivos)
El modo binario, por definición, no requiere una codificación porque está leyendo bytes individuales. La codificación solo es relevante cuando desea leer texto. Diferentes codificaciones tratan los datos binarios de manera diferente. Para algunas codificaciones, un solo byte representa un carácter. Para otros, un carácter puede ser de varios bytes. Este es todo el propósito de la codificación: representar datos de texto como caracteres.