Удаляет текст между 2 тегами python - PullRequest
0 голосов
/ 03 февраля 2020

Я удалил данные из Википедии и создал фрейм данных. df[0] содержит

{{Infobox_President  |name = Mohammed Anwar Al Sadat  < br / >  محمد أنورالسادات  |nationality = Al Menofeia, Mesir  |image = Anwar Sadat cropped.jpg  |order = Presiden Mesir ke-3  |term_start = 20 Oktober 1970  |term_end = 6 Oktober 1981  |predecessor = Gamal Abdel Nasser  |successor = Hosni Mubarak  |birth_date =|birth_place = Mit Abu Al-Kum, Al-Minufiyah, Mesir  |death_place = Kairo, Mesir  |death_date =|spouse = Jehan Sadat  |party = Persatuan Arab Sosialis  < br / >  (hingga 1977)  < br / >  Partai Nasional Demokratik (Mesir)|Partai Nasional Demokratik  < br / >  (dari 1977)  |vicepresident =|constituency =}}  Jenderal Besar Mohammed Anwar Al Sadat () adalah seorang tentara dan politikus Mesir. Ia menjabat sebagai Presiden Mesir|Presiden ketiga Mesir pada periode 15 Oktober 1970 hingga terbunuhnya pada 6 Oktober 1981. Oleh dunia Barat ia dianggap sebagai orang yang sangat berpengaruh di Mesir dan di Timur Tengah dalam sejarah modern.

Я хочу удалить:

{{Infobox_President  |name = Mohammed Anwar Al Sadat  < br / >  محمد أنورالسادات  |nationality = Al Menofeia, Mesir  |image = Anwar Sadat cropped.jpg  |order = Presiden Mesir ke-3  |term_start = 20 Oktober 1970  |term_end = 6 Oktober 1981  |predecessor = Gamal Abdel Nasser  |successor = Hosni Mubarak  |birth_date =|birth_place = Mit Abu Al-Kum, Al-Minufiyah, Mesir  |death_place = Kairo, Mesir  |death_date =|spouse = Jehan Sadat  |party = Persatuan Arab Sosialis  < br / >  (hingga 1977)  < br / >  Partai Nasional Demokratik (Mesir)|Partai Nasional Demokratik  < br / >  (dari 1977)  |vicepresident =|constituency =}} 

Как я могу это сделать? Я пытался

df['Body'] = df['Body'].replace('< ref >.< \/ref > | {{.}} | {{.*=}}','', regex = True)
df['Body'] = df['Body'].str.replace('\'\'\' | \n | [ | ] | \'\'','',regex=True)

, но это действительно работает

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Вы были очень близки, потому что это не сработало из-за дополнительного интервала в вашем шаблоне регулярных выражений, | {{.*=}} учитывает пространство за фигурными пробелами. Как предложено в качестве другого ответа, вы можете использовать специальный оператор ^, который привязывает в начале строки.

Иначе, чтобы применить замену регулярного выражения, которая соответствует этому точному шаблону, затем удалите пробелы в вашем шаблоне:

text = '{{Infobox_President  |name = Mohammed Anwar Al Sadat  < br / >  محمد أنورالسادات  |nationality = Al Menofeia, Mesir  |image = Anwar Sadat cropped.jpg  |order = Presiden Mesir ke-3  |term_start = 20 Oktober 1970  |term_end = 6 Oktober 1981  |predecessor = Gamal Abdel Nasser  |successor = Hosni Mubarak  |birth_date =|birth_place = Mit Abu Al-Kum, Al-Minufiyah, Mesir  |death_place = Kairo, Mesir  |death_date =|spouse = Jehan Sadat  |party = Persatuan Arab Sosialis  < br / >  (hingga 1977)  < br / >  Partai Nasional Demokratik (Mesir)|Partai Nasional Demokratik  < br / >  (dari 1977)  |vicepresident =|constituency =}}  Jenderal Besar Mohammed Anwar Al Sadat () adalah seorang tentara dan politikus Mesir. Ia menjabat sebagai Presiden Mesir|Presiden ketiga Mesir pada periode 15 Oktober 1970 hingga terbunuhnya pada 6 Oktober 1981. Oleh dunia Barat ia dianggap sebagai orang yang sangat berpengaruh di Mesir dan di Timur Tengah dalam sejarah modern.'
df = pd.DataFrame({'text':[text]})

new_df = df.replace('< ref >.< \/ref >|{{.*}}','', regex = True)

new_df.text[0]

Output:
'  Jenderal Besar Mohammed Anwar Al Sadat () adalah seorang tentara dan politikus Mesir. Ia menjabat sebagai Presiden Mesir|Presiden ketiga Mesir pada periode 15 Oktober 1970 hingga terbunuhnya pada 6 Oktober 1981. Oleh dunia Barat ia dianggap sebagai orang yang sangat berpengaruh di Mesir dan di Timur Tengah dalam sejarah modern.'
0 голосов
/ 03 февраля 2020

Это сделает трюк

import re
re.sub('^{{.*}}','', text)

вы можете apply эту функцию для столбца вашего информационного кадра, и он преобразует столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...