2016-04-05 5 views
-3

Ich will diese Sätze auszuwählen, die enthält einige Konjunktionen mentioned.But ich einen Fehler wie ich immer:Wörter in einer Excel-Tabelle zu finden, ‚str‘ unterstützt nicht die Puffer-Schnittstelle

Traceback (most recent call last): 
    File "positive_process3.py", line 14, in <module> 
    if word in text: 
TypeError: 'str' does not support the buffer interface. 

Mein Code ist:

import xlrd 
from xlrd import open_workbook 
import xlwt 
wb = open_workbook("C:/Users/SA769740/Desktop/result2/pos.xlsx") 
book = xlwt.Workbook(encoding="utf-8") 
sheet1 = book.add_sheet("Sheet 1") 
wordSet = [' for ', ' so ',' since ', ' Since ', ' because ', ' as ', ' As ', ' due to ', ' Due to '] 
count=1 
for sheet in wb.sheets(): 
    for row in range(sheet.nrows): 
     text = ((sheet.cell(row,2).value).encode("utf-8")) 
     l = "" 
     for word in wordSet: 
      if word in text: 
       l += (word+" ") 
     sheet1.write(row,0,sheet.cell(row, 0).value) 
     sheet1.write(row,3, l) 
     sheet1.write(row,4,count) 
     sheet1.write(row,5,value) 

     count += 1 

book.save('C:/Users/SA769740/Desktop/result2/pos_reviews_process3.xls') 

ich verwende Python 3.4.3

+1

Bitte bearbeiten Sie Ihre Frage und korrigieren Sie die Einrückung. Im Moment ist Ihr Code nicht gültig für Python. –

+1

Bist du sicher, dass du Python 2 benutzt? Die Ausnahme weist stark darauf hin, dass Sie Python 3 verwenden. 'Text' ist aus Unicode codiert, und' word' aus 'wordSet' ist ein einfaches Zeichenfolgenliteral. Ich kann nur Ihre Ausnahme auf Python 3 reproduzieren. –

+0

Wahrscheinlich Duplikat von http://StackOverflow.com/Questions/5471158/Typeerror-Str-does-Not-Support-The-Buffer-Interface – cdarke

Antwort

2

Sie sind nicht mit Python 2. Sie verwenden Python 3, und versuchen, einevergleichenObjekt mit einem bytes Objekt.

Die Lösung ist entweder zu wechseln Python 2 oder nicht str.encode() verwenden, auf dem text Wert:

text = sheet.cell(row, 2).value 

Selbst wenn Ihre Python-Version beheben und diese laufen auf Python 2, sollten Sie Unicode-Werte verwenden überall und kodiere deinen Text nicht in UTF-8. Wenn Sie Textvergleiche mit UTF-8-codierten Daten verwenden, könnten Sie mit Teil-Byte-Sequenz-Übereinstimmungen enden.

Verwandte Themen