删除2个标签python之间的文本

问题描述 投票:0回答:2

我已从Wikipedia抓取数据并创建了一个数据框。 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)

但它不起作用

python regex dataframe tags
2个回答
0
投票

这将解决问题

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

您可以apply将此函数添加到数据框的列,它将转换该列。


0
投票

您非常亲密,之所以不起作用,是因为正则表达式模式中有额外的间距,| {{.*=}}考虑了卷曲空间后面的空间。根据其他答案的建议,您可以使用锚定在行首的特殊运算符^

否则将应用匹配该确切模式的正则表达式替换,然后删除模式中的空格:

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.'
© www.soinside.com 2019 - 2024. All rights reserved.