Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的UnicodeDecodeError-Databricks_Python_Unicode_Python Unicode - Fatal编程技术网

Python中的UnicodeDecodeError-Databricks

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

我正在数据块上运行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(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是什么,所以,对不起……它是否能解决问题你的问题:看我的第一条评论。