【问题标题】:Removes text between 2 tags python删除2个标签python之间的文本
【发布时间】:2020-02-03 11:46:44
【问题描述】:

我从 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)

但它不起作用

【问题讨论】:

  • 到目前为止你有什么尝试?
  • @ohai 发布预期结果

标签: python regex dataframe tags


【解决方案1】:

这样就可以了

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

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

【讨论】:

    【解决方案2】:

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

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

    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.'
    

    【讨论】:

    • 顺便说一句,我的文本包含&lt; div class= " thumb tright " style= " background-color: #f9f9f9; border:purple 1px solid #CCCCCC; margin:0.5em; " &gt; {| border= " 0 " cellpadding= " 10 " cellspacing= " 0 " style= " font-size: 85%; border: 1px solid #CCCCCC; margin: 0.3em; " |valign= " top " |Berkas:EscherichiaColi NIAID.jpg|90px|Escherichia coli |valign= " top " |Berkas:Tree Fern.jpg|90px|Tumbuhan paku |- |valign= " ------ " |Berkas:Goliath beetle.jpg|90px|Kumbang goliath |valign= " ------ " |Berkas:,我尝试了df['Body'] = df['Body'].replace('&lt;.*&gt;','',regex=True),但它不起作用
    • 不起作用是什么意思?再说一次,如果这些答案中的任何一个对您有所帮助,请接受它们,其他人很难从一段文字中理解一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多