Python: re.sub дает другой вывод, когда символ юникода извлекается из строковой переменной, содержащей данные из фрейма данных pandas

Следующие работы:

import re
text = "I\u2019m happy"
text_p = text
text_p = re.sub("[\u2019]","'",text_p)
print(text_p)

Вывод: я доволен

Это не работает:

training_data = pd.read_csv('train.txt')

import re
text = training_data['tweet_text'][0] # Assume that this returns a string "I\u2019m happy"
text_p = text
text_p = re.sub("[\u2019]","'",text_p)
print(text_p)

Результат: Я счастлив

1 ответ

Я пробовал запустить ваш код и получил I'm happy возвращается как из строки, так и из элемента списка при передаче каждого в re.sub(...) как указано в вашем вопросе.

Если вы просто хотите проанализировать (декодировать) символы Юникода, вам, вероятно, не нужно использовать re. Что-то вроде приведенного ниже можно использовать для анализа символов Юникода без запускаre чтобы проверить каждую возможность.

text = training_data['tweet_text'][0]

if type(text) == str: # if value is str then encode to utf-8 byte string then decode back to str
    text = text.encode()
    text = text.decode()
elif type(text) == bytes: # elif value is bytes just decode to str
    text = text.decode()
else: # else printout to console if value is neither str or bytes
   print("Value not recognised as str or bytes!")
Другие вопросы по тегам