Как заменить длинное тире в кадре данных?Python

Программы на Python
Ответить
Anonymous
 Как заменить длинное тире в кадре данных?

Сообщение Anonymous »

Я пытаюсь удалить «тире» из DataFrame pandas.
Я попробовал кучу разных предложений. Но ни один из них не работает.
Вот что у меня есть

Код: Выделить всё

# -*- coding: utf-8 -*-

my_str = 'word—word'
# my_str.replace(b'\xe2\x80\x94'.decode('utf-8'), '--')
my_str.replace('—'.decode('utf8'), 'xx')
#my_str.replace('\u2014', 'x')

print(my_str)
Я пытаюсь просто заменить длинное тире «—» чем-то другим.
Я всегда получаю сообщение об ошибке.
UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xe2 в позиции 9: порядковый номер вне диапазона (128)
Я застрял на этом. любая помощь приветствуется. спасибо
Ссылки, которые я использовал:
ссылка первая
ссылка вторая
==========
Решение благодаря @Corralien. Я добавляю еще несколько пунктов, чтобы решить эту проблему, поскольку она сводила меня с ума.
Сначала проверьте символ Юникода, с которым вы имеете дело.

Код: Выделить всё

print(ord(u'—'))
затем найдите его здесь
поиск в Юникоде
найдите для него исходный код Python. в моем случае он был возвращен как 8212, который находится в Python

Код: Выделить всё

u"\u2014"
в python2.7 вам нужно начинать строку с 'u', поскольку только начиная с версии 3 Python по умолчанию интерпретирует каждую строку как Unicode. поэтому для Python 3 используйте

Код: Выделить всё

"\u2014"
к вашему сведению, шестнадцатеричное представление utf-8 тоже работает

Код: Выделить всё

.str.replace('\xe2\x80\x94', '+')
что соответствует шестнадцатеричному представлению utf-8

Код: Выделить всё

0xE2 0x80 0x94
Надеюсь, это поможет будущим посетителям, по крайней мере, я смогу найти это в следующий раз, прежде чем тратить часы на отладку.
PS. Чтобы str.replace работал, вам нужно использовать его только для одного столбца. str.replace не работает для фреймов данных с несколькими столбцами.
поэтому я использовал его как таковой:

Код: Выделить всё

df['column'] = df['column'].str.replace(u'\u2014', '+')
замена рассматриваемого столбца столбцом, в котором длинное тире заменено на +.

Подробнее здесь: https://stackoverflow.com/questions/711 ... -dataframe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»