Как удалить префикс U из строки Unicode? - PullRequest
0 голосов
/ 04 января 2019

Я читаю строки из файла CSV;Я применяю алгоритм LDA, чтобы найти наиболее распространенную тему, после обработки данных в doc_processed я получаю 'u' в каждом слове, но почему?Пожалуйста, предложите мне удалить 'u' из обработанного doc +, мой код в Python 2.7:

data = [line.strip() for line in open("/home/dnandini/test/h.csv", 'r')]

stop = set(stopwords.words('english'))# stop words
exclude = set(string.punctuation) #to reomve the punctuation
lemma = WordNetLemmatizer() # to map with parts of speech

def clean(doc):

    stop_free = " ".join([i for i in doc.lower().split() if i not in stop])
    punc_free = ''.join(ch for ch in stop_free if ch not in exclude)
    normalized = " ".join(lemma.lemmatize(word) for word in punc_free.split())
    shortword = re.compile(r'\W*\b\w{1,2}\b')
    output=shortword.sub('', normalized)   
    return output  
doc_processed = [clean(doc) for doc in data] 

Вывести как doc_processed -

 [u'amount', u'ze69heneicosadien11one', u'trap', u'containing', u'little', u'microg', u'zz69ket', u'attracted', u'male', u'low', u'population', u'level', u'indicating', u'potent', u'sex', u'attractant', u'trap', u'baited', u'z6ket', u'attracted', u'male', u'windtunnel', u'bioassay', u'least', u'100fold', u'attractive', u'male', u'zz69ket', u'improvement', u'trap', u'catch', u'occurred', u'addition', u'z6ket', u'various', u'binary', u'mixture', u'zz69ket', u'including', u'female', u'ratio', u'ternary', u'mixture', u'zz69ket']

1 Ответ

0 голосов
/ 04 января 2019

формат u'some string' означает, что это строка Unicode.См. этот вопрос для получения дополнительной информации о самих строках Unicode, но самый простой способ исправить это, вероятно, str.encode результат перед возвратом из clean.

def clean(doc):
    # all as before until
    output = shortword.sub('', normalized).encode()
    return output

Примечаниечто попытка кодировать кодовые точки Unicode, которые не преобразуются непосредственно в кодировку по умолчанию (которая выглядит как ASCII. См. sys.getdefaultencoding() в вашей системе для проверки), выдаст здесь ошибку.Вы можете обработать ошибку различными способами, задав errors kwarg для кодирования.

s.encode(errors="ignore")  # omit the code point that fails to encode
s.encode(errors="replace")  # replace the failing code point with '?'
s.encode(errors="xmlcharrefreplace") # replace the failing code point with ' '
# Note that the " " above is U+FFFD, the Unicode Replacement Character.
...