2016-05-16 3 views
0

Я использую некоторые примеры кода (ниже), чтобы проверить классификатор NB и Im получаю следующее сообщение об ошибке из строки 22:csv.Error: символ новой строки

_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode? 

Это пример строки из CSV файл:

b8:27:eb:38:72:a7,df598b5eb8f4,5/9/16 14:47,154aec250ef6,-84,outside 

образец кода:

from sklearn.preprocessing import LabelBinarizer 
import numpy as np 
from sklearn import naive_bayes 
import csv 
import random 
from sklearn import metrics 
import urllib 
url = "example.com" 
webpage = urllib.urlopen(url) 
# download the file 
#raw_data = urllib.urlopen(url) 

datareader = csv.reader(webpage) #line 22 is this one 

ct = 0; 
for row in datareader: 
    ct = ct+1 
webpage = urllib.urlopen(url) 
datareader = csv.reader(webpage) 
data = np.array(-1*np.ones((ct,6),float),object); 
k=0; 
for row in datareader: 
    data[k,:] = np.array(row) 
    k = k+1; 

featnames = np.array(['unti','dongle','timestamp','tracker','rssi','label'],str) 

keys = [[]]*np.size(data,1) 
numdata = -1*np.ones_like(data); 

for k in range(np.size(data,1)): 
    keys[k],garbage,numdata[:k] = np.unique(data[:,k],True,True) 

numrows = np.size(numdata,0); 
numcols = np.size(numdata,1); 
numdata = np.array(numdata, int) 
xdata = numdata[:,:-1] 
ydata = numdata[:,-1] 

lbin = LabelBinarizer(); 
for k in range(np.size(xdata,1)): 
if k==0: 
    xdata_ml = lbin.fit_transform(xdata[:,k]); 
else: 
    xdata_ml = np.hstack((xdata_ml,lbin.fit_transform(xdata[:,k]))) 
ydata_ml = lbin.fit_transform(ydata) 


allIDX = np.arrange(numrows); 
random.shuffle(allIDX); 
holdout_number = numrows/10; 
testIDX = allIDX[0:holdout_number]; 
trainIDX = allIDX[holdout_number:]; 

xtest = xdata_ml[testIDX,:]; 
xtrain = xdata_ml[trainIDX,:]; 
ytest = ydata[testIDX]; 
ytrain = ydata[trainIDX]; 

mnb = naive_bayes.MultinomialNB(); 
mnb.fit(xtrain,ytrain); 
print "Classification accuracy of MNB =", mnb.score(xtest,ytest) 

Может кто-нибудь помочь мне найти ошибку и исправит ошибку?

ответ

0

Вы используете окна? Если да, то это может быть решена путем:

datareader = csv.reader(webpage, dialect=csv.excel_tab) 
+0

nope - Anaconda на mac – DataGuy

+0

hm .. weird .. Вы пробовали добавить «диалект» kwarg? – silviomoreto

+0

Да Я пробовал – DataGuy

0

Некоторые ответы здесь CSV new-line character seen in unquoted field error относятся к CSV в MAC

Вы можете попытаться вручную загрузить файл на MAC и попытаться сделать следующее с файл как локальный файл:

1) Сохраните файл CSV (MS-DOS разделены запятыми)

2) Сохраните файл в формате CSV (Windows разделены запятыми)

3) Выполните следующий сценарий

with open(csv_filename, 'rU') as csvfile: 
    csvreader = csv.reader(csvfile) 
    for row in csvreader: 
     print ', '.join(row) 

объяснения о «р»: https://www.python.org/dev/peps/pep-0278/

В Python с универсальной поддержкой новой строки открытой() параметр режима может быть также «U», что означает «открыты для ввода как текстовый файл с универсальной интерпретацией новой строки ». Режим «Rū» также допускается, и для симметрии с «гб»

Обоснование

Универсальная поддержка новой строки осуществляется в C, а не в Python. Это сделано потому, что мы хотим, чтобы файлы с внешней новой строкой конвенции быть импортны-состояние, поэтому каталог Python Lib может быть совместно через соединение системы удаленного файла или между MacPython и Unix-Python на Mac OS X

Смежные вопросы