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!")