Удалить все возможные нежелательные символы из строки Python сразу

Я использую модуль Python newspaper3k и извлечение резюме статьи, используя его веб-URL. Как,

from newspaper import Article
article = Article('https://www.abcd....vnn.com/dhdhd')
article.download()
article.parse()
article.nlp()
text = article.summary
print (text)

дает,

Often hailed as Hollywood\xe2\x80\x99s long standing, commercially successful filmmaker, Spielberg\xe2\x80\x99s lifetime gross, if you include his productions, reaches a mammoth\xc2\xa0$17.2 billion\xc2\xa0\xc2\xad\xe2\x80\x93 unadjusted for inflation.
\r\rThe original\xc2\xa0Jurassic Park\xc2\xa0($983.8 million worldwide), which released in 1993, remains Spielberg\xe2\x80\x99s highest grossing film.
Ready Player One,\xc2\xa0currently advancing at a running total of $476.1 million, has become Spielberg\xe2\x80\x99s seventh highest grossing film of his career.It will eventually supplant Aamir\xe2\x80\x99s 2017 blockbuster\xc2\xa0Dangal\xc2\xa0(1.29 billion yuan) if it achieves the Maoyan\xe2\x80\x99s lifetime forecast of 1.31 billion yuan ($208 million) in the PRC.

Все, что я хочу, чтобы удалить все нежелательные символы, такие как \xe2\x80\x99s, Я избегаю использовать несколько replace функция. Все, что я хочу что-то вроде:-

Often hailed as Hollywood long standing, commercially successful filmmaker, 
Spielberg lifetime gross, if you include his productions, reaches a 
mammoth $17.2 billion unadjusted for inflation.
The original Jurassic Park ($983.8 million worldwide), 
which released in 1993, remains Spielberg highest grossing film.
Ready Player One,currently advancing at a running total of $476.1 million, 
has become Spielberg seventh highest grossing film of his career.
It will eventually supplant Aamir 2017 blockbuster Dangal (1.29 billion yuan) 
if it achieves the Maoyan lifetime forecast of 1.31 billion yuan ($208 million) in the PRC

4 ответа

Вы можете использовать питона encode/decode избавиться от всяких нелатинских символов

data = text.decode('utf-8')
text = data.encode('latin-1', 'ignore')

Попробуйте использовать регулярные выражения:

import re
clear_str = re.sub(r'[\xe2\x80\x99s]', '', your_input)

re.sub заменяет все вхождения шаблона в your_input со вторым аргументом. Образец как [abc] соответствует либо a, b или же c персонаж.

Первое использование .encode('ascii',errors='ignore') игнорировать все не ASCII символы.

Если вам нужен этот текст для какого-либо анализа настроений, вам также может потребоваться удалить специальные символы, такие как \n, \rи т. д., что можно сделать, сначала выбрав экранирующие символы, а затем заменив их с помощью регулярных выражений.

from newspaper import Article
import re
article = Article('https://www.abcd....vnn.com/dhdhd')
article.download()
article.parse()
article.nlp()
text = article.summary
text = text.encode('ascii',errors='ignore')
text = str(text) #converts `\n` to `\\n` which can then be replaced by regex
text = re.sub('\\\.','',text) #Removes all substrings of form \\.
print (text)

Статья была расшифрована неправильно. Скорее всего, на сайте указана неправильная кодировка, но в вопросе не указан действительный URL, чтобы воспроизвести вывод, который трудно доказать.

Экранирующие коды указывают, что utf8 была правильной кодировкой, поэтому используйте следующее для прямого кодирования обратно в байты (latin1 - это отображение 1:1 из первых 256 кодовых точек Unicode в байты), а затем декодируйте с помощью utf8:

text = text.encode('latin1').decode('utf8')

Результат:

Часто провозглашаемый как давний, коммерчески успешный голливудский режиссер, совокупный объем жизни Спилберга, если вы включите его продакшн, достигает гигантских $17,2 млрд - без учета инфляции.

Оригинальный Парк Юрского периода ($983,8 млн. По всему миру), выпущенный в 1993 году, остается самым кассовым фильмом Спилберга. Ready Player One, в настоящее время продвигающийся на общую сумму $476,1 млн, стал седьмым самым кассовым фильмом Спилберга в его карьере. В конечном итоге он вытеснит блокбастера Аамира в 2017 году (1,29 млрд юаней), если он достигнет прогноз жизни Маояна в 1,31 млрд юаней (208 миллионов долларов) в КНР.

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