Python中的UnicodeDecodeError-Databricks
我正在数据块上运行python代码来清理文本。 有些文本有这样的值,我不想删除 代码如下:Python中的UnicodeDecodeError-Databricks,python,unicode,python-unicode,Python,Unicode,Python Unicode,我正在数据块上运行python代码来清理文本。 有些文本有这样的值,我不想删除 代码如下: def docs_preprocessor(docs): tokenizer = RegexpTokenizer(r'\w+') for idx in range(len(docs)): # print(docs[idx]) docs[idx] = " ".join(w.lower() for w in nltk.wordpunct_tokenize(doc
def docs_preprocessor(docs):
tokenizer = RegexpTokenizer(r'\w+')
for idx in range(len(docs)):
# print(docs[idx])
docs[idx] = " ".join(w.lower() for w in nltk.wordpunct_tokenize(docs[idx]) if w.lower() in words or not w.isalpha())
docs[idx] = ' '.join(s for s in docs[idx].split() if not any(c.isdigit() for c in s))
# print(docs[idx])
docs[idx] = tokenizer.tokenize(docs[idx]) # Split into words.
# print(docs[idx])
# docs[idx] = docs[idx].lower() # Convert to lowercase.
# Remove numbers, but not words that contain numbers.
docs = [[token for token in doc if not token.isdigit()] for doc in docs]
docs = [[token.strip("_") for token in doc ] for doc in docs]
# Remove words that are only one character
docs = [[token for token in doc if len(token) > 3] for doc in docs]
# Lemmatize all words in documents.
lemmatizer = WordNetLemmatizer()
docs = [[lemmatizer.lemmatize(token) for token in doc] for doc in docs]
docs = [" ".join(doc) for doc in docs]
return docs
但我得到的错误是:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range(128)
我尝试使用以下链接修复此问题:
但它不起作用
当我检查Databricks中的python版本时:
from platform import python_version
print(python_version())
2.7.12
Python2在几天内就要寿终正寝了。您是否有充分的理由继续使用它?–注意:Python3不会神奇地解决所有Unicode错误。但是如果强制您清晰地分隔文本(Unicode)和字节字符串,它可能会帮助您避免第一次显示的乱码文本,或者至少允许您干净地删除它。这很奇怪,但是如果您注意到print语句,代码遵循python3语法。我不知道到底是什么问题。
print(…)
是合法的Python-2语法,使用from\uuuuuuu future\uuuuu导入print\u语句
您甚至可以调用print(…,sep='\t')
。关键是Python 2允许您通过隐式强制执行“å”+u“å”
之类的操作,而隐式强制通常不会执行您实际希望执行的操作,而且调试起来很痛苦。有没有关于如何在Databricks中更新到Python 3.6的想法。如果这解决了问题。我不知道Databricks是什么,所以,对不起……它是否能解决问题你的问题:看我的第一条评论。