#keras #nlp
#keras #nlp
Вопрос:
def clean_str(string):
string = re.sub(r"\", "", string)
string = re.sub(r"'", "", string)
string = re.sub(r""", "", string)
return string.strip().lower()
input_data = pd.read_csv('E:\data\rawData\labeledTrainData.tsv', sep='t')#导入数据
for idx in range(input_data.review.shape[0]):
text = BeautifulSoup(input_data.review[idx], features="html5lib")
text = clean_str(text.get_text().encode('ascii', 'ignore'))
texts.append(text)
sentences = tokenize.sent_tokenize(text)
reviews.append(sentences)
labels.append(input_data.sentiment[idx])
ошибка:
Использование серверной части TensorFlow.
Traceback (most recent call last):
File "e:/python程序库/wu.py", line 379, in <module>
text = clean_str(text.get_text().encode('ascii', 'ignore'))
File "e:/python程序库/wu.py", line 370, in clean_str
string = re.sub(r"\", "", string)
File "C:Users29091Anaconda3libre.py", line 192, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: cannot use a string pattern on a bytes-like object
Ответ №1:
Ваша string
переменная должна быть строкой python unicode, а не объектом bytes (при условии, что это py3):
In [3]: re.sub(r"'", "", "jack's")
Out[3]: 'jacks'
In [4]: re.sub(r"'", "", b"jack's")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-0ca08a0c3ee4> in <module>()
----> 1 re.sub(r"'", "", b"jack's")
~/miniconda3/envs/address/lib/python3.6/re.py in sub(pattern, repl, string, count, flags)
189 a callable, it's passed the match object and must return
190 a replacement string to be used."""
--> 191 return _compile(pattern, flags).sub(repl, string, count)
192
193 def subn(pattern, repl, string, count=0, flags=0):
TypeError: cannot use a string pattern on a bytes-like object
In [5]: re.sub(r"'", "", b"jack's".decode())
Out[5]: 'jacks'
- первый вызов работает
- добавление
b
префикса во втором примере для преобразования данных в байты приводит к той же ошибке, которую вы видите - добавление вызова для
.decode
преобразования байтов в строку снова исправляет ошибку