специальные буквы python, исправить строку

Не дубликат

Это не дубликат этого вопрос я думаю. Там ответ говорит, как исправить проблему в python 2 и что она не должна возникать в python 3. Также предоставленный ответ не работает для меня:

>>"ć́".decode()
AttributeError: 'str' object has no attribute 'decode'

>>len(u"ć́")
2

Оригинальный вопрос:

Я импортирую данные книги с веб-сайта и затем обрабатываю их. Одним из первых шагов является создание некоторого материала с длиной определенной строки. К сожалению, функция len() иногда возвращает ложное значение, когда включены неправильные символы:

>>len("Krste Asanović́ ... [et al.].")
29
>>ord("ć́")
TypeError: ord() expected a character, but string of length 2 found

Здесь ć́ не является стандартным символом, если я заменю его обычным c, я получу другой результат.

>>len("Krste Asanovic ... [et al.].")
28

Я могу, конечно, решить проблему с помощью replace():

>>"Krste Asanović́ ... [et al.].".replace("ć́","c")
'Krste Asanovic ... [et al.].'

Но есть ли способ вообще запретить странные буквы?

РЕДАКТИРОВАТЬ

>>list("ć́")
['ć', '́']

Я использую python3.6

РЕДАКТИРОВАТЬ 2

это...

>>"ć́".replace("´","")
"ć́"

ничего не делает.


person NewNewton    schedule 18.02.2018    source источник
comment
Пожалуйста, покажите (1) какую версию Python вы используете, (2) что возвращает list("ć").   -  person lenz    schedule 18.02.2018
comment
При повторном рассмотрении примера я вижу, что 2-символьная строка, которая просматривается здесь, на самом деле является буквой ć, за которой следует сочетание острого ударения (таким образом, концептуально на самом деле есть два острых ударения). Поэтому я думаю, что это не дубликат связанного вопроса, который является кодировкой. Здесь у нас проблема с данными.   -  person lenz    schedule 18.02.2018
comment
Для меня ясно, что это не дубликат упомянутого вопроса. Однако мне непонятно, что вы хотите: данный пример, скорее всего, испорчен (акцентированная буква с тем же акцентом снова), но вы говорите о странных и ненормальных символах, которые могут быть чем угодно. Вы хотите только ASCII? Или просто не сочетаются символы? Например, было бы вполне приемлемо использовать c плюс сочетание остроты (т.е. двух символов), что эквивалентно (но не равно) одиночному символу ć.   -  person lenz    schedule 18.02.2018
comment
а, ладно, понятно... я хочу преобразовать строку. чтобы получить результат len(), как если бы это был только один символ, потому что ему нужно место только для одного символа. Я думал, что это ненормальный символ, интерпретируемый python как два символа. Но похоже, что это очень уникальное исключение, так что, возможно, решение replace() подойдет... (?)   -  person NewNewton    schedule 18.02.2018
comment
Если это редкий случай, подойдет решение replace. Ваше последнее редактирование не работает, потому что вы используете неправильный символ (акцент ASCII\xB4 вместо сочетания острого \u0301).   -  person lenz    schedule 19.02.2018