Удаление не Unicode символов из файла

Я знаю, что это повторяющийся вопрос, но я очень старался все решения до сих пор. Может кто-нибудь, пожалуйста, помогите, как избавиться от символов, таких как \xc3\xa2\xc2\x84\xc2\xa2 из файла?

Содержимое файла, которое я сейчас пытаюсь почистить: b'Roasted Onion Dip',"b""['2 фунта большого желтого лука, тонко нарезанного ', '3 больших шалота, тонко нарезанного ', '4 веточки тимьяна ', "1/4 стакана оливкового масла", "Кошерная соль и свежемолотый черный перец", "1 стакан белого вина", "2 столовые ложки шампанского, уксуса", "2 стакана сметаны", "1/2 стакана нарезанного свежего зеленого лука", '1/4 стакана простого греческого йогурта', 'Все приправы и гарнир из тимьяна', 'Волны Кейп-Код \xc3\xa2\xc2\x84\xc2\xa2 Картофельные чипсы для сервировки']"""

Я пытался использовать re.sub('[^\x00-\x7F]+',' ', любой текст), но, похоже, никуда не денется. Я подозреваю, что \ здесь не рассматривается как специальный символ.

1 ответ

Решение

Вы можете сделать что-то вроде этого:

>>> f = open("test.txt","r")
>>> whatevertext = f.read()
>>> print whatevertext
b'Roasted Onion Dip',"b""['2 pounds large yellow onions, thinly sliced', '3 large shallots, thinly sliced', '4 sprigs thyme', '1/4 cup olive oil', 'Kosher salt and freshly ground black pepper', '1 cup white wine', '2 tablespoons champagne vinegar', '2 cups sour cream', '1/2 cup chopped fresh chives', '1/4 cup plain Greek yogurt', 'Everything seasoning and thyme to garnish', 'Cape Cod Waves\xc3\xa2\xc2\x84\xc2\xa2 Potato Chips for serving']"""

>>> import re
>>> result = re.sub('\\\\x[a-f|0-9]+','',whatevertext)
>>> print result
b'Roasted Onion Dip',"b""['2 pounds large yellow onions, thinly sliced', '3 large shallots, thinly sliced', '4 sprigs thyme', '1/4 cup olive oil', 'Kosher salt and freshly ground black pepper', '1 cup white wine', '2 tablespoons champagne vinegar', '2 cups sour cream', '1/2 cup chopped fresh chives', '1/4 cup plain Greek yogurt', 'Everything seasoning and thyme to garnish', 'Cape Cod Waves Potato Chips for serving']"""

>>> 

'\\ x [af|0-9]+' в этом регулярном выражении каждая косая черта экранируется косой чертой, и после x мы знаем, что могут быть числа от 0 до 9 или алфавиты от af.

Другие вопросы по тегам