Я прочитал все сообщения об ошибке и до сих пор не могу понять, как отладить мою конкретную проблему.Ошибка BeautifulSoup ascii и csv
Из командной строки я читаю файл csv.
adamg:NLP adamg$ python3 train_classifier.py samples.csv /Users/adamg/PycharmProjects/NLP/samples
Если открыть его в виде файла байт, например, так:
training_pages_list_file = sys.argv[1]
with open(training_pages_list_file,'rb') as f:
reader = csv.reader(f)
training_page_list.extend(reader)
Я получаю ошибку:
File "train_classifier.py", line 17, in <module>
training_page_list.extend(reader)
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Однако, если я могу изменить его для чтения в виде текстового файла , или оставьте кодировку, я получаю сообщение об ошибке, когда строка передается объекту BeautifulSoup
:
training_pages_list_file = sys.argv[1]
html_page_dir = sys.argv[2]
with open(training_pages_list_file,'r') as f:
reader = csv.reader(f)
training_page_list.extend(reader)
for page,category in training_page_list:
cp = CraigsPage(os.path.join(html_page_dir,page))
CraigsPage.py
class CraigsPage():
def __init__(self, page_file):
self.doc_name = page_file
self.soup = BeautifulSoup(open(page_file).read())
self.title = self.soup.title.string
Я получаю ошибку:
File "train_classifier.py", line 22, in <module>
cp = CraigsPage(os.path.join(html_page_dir,page))
File "/Users/adamg/PycharmProjects/NLP-HW1/craiger.py", line 15, in __init__
self.page = open(page_file).read()
File "/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 6646: ordinal not in range(128)
Как я могу решить эту проблему?
Я думаю, что это может помочь, а также: http://stackoverflow.com/questions/6065329/parsing-inside-a-directory-problem-python-2-7-vs-3-2 – kennes