2016-11-24 310 views
1

嘿,我有一個csv多語言文本。我想要的是一列附加了檢測到的語言的列。所以我編寫如下,在python中使用langdetect時出錯:「文本中沒有功能」

from langdetect import detect 
import csv 
with open('C:\\Users\\dell\\Downloads\\stdlang.csv') as csvinput: 
with open('C:\\Users\\dell\\Downloads\\stdlang.csv') as csvoutput: 
writer = csv.writer(csvoutput, lineterminator='\n') 
reader = csv.reader(csvinput) 

    all = [] 
    row = next(reader) 
    row.append('Lang') 
    all.append(row) 

    for row in reader: 
     row.append(detect(row[0])) 
     all.append(row) 

    writer.writerows(all) 

但我得到的錯誤爲LangDetectException: No features in text

回溯如下

runfile('C:/Users/dell/.spyder2-py3/temp.py', wdir='C:/Users/dell/.spyder2-py3') 
Traceback (most recent call last): 

    File "<ipython-input-25-5f98f4f8be50>", line 1, in <module> 
    runfile('C:/Users/dell/.spyder2-py3/temp.py', wdir='C:/Users/dell/.spyder2-py3') 

    File "C:\Users\dell\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\dell\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/dell/.spyder2-py3/temp.py", line 21, in <module> 
    row.append(detect(row[0])) 

    File "C:\Users\dell\Anaconda3\lib\site-packages\langdetect\detector_factory.py", line 130, in detect 
    return detector.detect() 

    File "C:\Users\dell\Anaconda3\lib\site-packages\langdetect\detector.py", line 136, in detect 
    probabilities = self.get_probabilities() 

    File "C:\Users\dell\Anaconda3\lib\site-packages\langdetect\detector.py", line 143, in get_probabilities 
    self._detect_block() 

    File "C:\Users\dell\Anaconda3\lib\site-packages\langdetect\detector.py", line 150, in _detect_block 
    raise LangDetectException(ErrorCode.CantDetectError, 'No features in text.') 

LangDetectException:在文本沒有的功能。

這是我的CSV看起來像 1)skunkiest smokiest yummiest應變止痛藥和情緒提升 2)放鬆,euphorique,surélevée,嗜睡,潛心研究,picotement,UNE增強DE L'胃口好,soulager LA douleur嘻嘻哈哈,體格,ESPRIT鎮靜 3)Reduzierte焦慮,汝河,gehobener Stimmung,zerebrale的Energie,KörperSedierung 4)Calmante,relajante肌肉發達,Relajación心理,disminución德嘔的 5)重いフルーティーな幸せ非常に強力な頭石のバースト

請幫我這個。

+1

你無法讀寫同一個文件!使用另一個文件輸出! –

+0

您能否包含CSV的前幾行,以便我們看看? –

+1

當拋出這個錯誤時'row [0]'的內容是什麼? – 2016-11-24 10:11:25

回答

0

您可以使用這樣的事情,以檢測線在你的文件被引發錯誤:

for row in reader: 
    try: 
     language = detect(row[0]) 
    except: 
     language = "error" 
     print("This row throws and error:", row[0]) 
    row.append(language) 
    all.append(row) 

什麼你要看到的是,它可能無法在「重いフルーティーな幸せ非常に強力な頭石のバースト」。我的猜測是detect()無法「識別」要在該行中分析的任何字符,這就是錯誤所暗示的意思。

其他的東西,比如當input is only a URL,也會導致這個錯誤。

相關問題