Python:从列表中删除/筛选等号

Python:从列表中删除/筛选等号,python,list,substring,Python,List,Substring,快速提问,因为我被困住了,似乎无法进一步提问 我的问题是: 我在一个数据集中工作,从XML转储中提取Wikipedia页面的每个节名。我提取文本,从文本中,每一部分都通过以下方式给出: ==节名== 但是,也有一些我不想处理的小节,这些小节是通过 ==节名=== 目前我正在使用正则表达式从文本(pagetext)中筛选节 但结果是,这些小节也包含在我的章节列表中。问题:如何从章节列表中筛选这些小节,以便仅从文本中检索章节 我用过这个列表,但不起作用 sections = [section for

快速提问,因为我被困住了,似乎无法进一步提问

我的问题是:

我在一个数据集中工作,从XML转储中提取Wikipedia页面的每个节名。我提取文本,从文本中,每一部分都通过以下方式给出:

==节名==

但是,也有一些我不想处理的小节,这些小节是通过

==节名===

目前我正在使用正则表达式从文本(pagetext)中筛选节

但结果是,这些小节也包含在我的章节列表中。问题:如何从章节列表中筛选这些小节,以便仅从文本中检索章节

我用过这个列表,但不起作用

sections = [section for section in sections if section[0] == (r"^=")]
非常感谢您的帮助:)非常感谢

  • 启用多行标志
    re.M
    ,以便表达式可以锚定在行的开头
  • 将表达式锚定在每行的开头
  • 通过排除第三个等号来排除原始正则表达式中的子部分
  • 比如说

    sections = re.findall("^==([^=].*)==", pagetext, re.M)
    

    如果周围的文字完全是任意的,您可能必须求助于:


    re.findall(r')(?这仍然会找到由三个“=”符号包围的部分。要清楚,您是直接使用正则表达式处理XML,还是先将XML转换为其他内容?不,首先我处理XML以到达标记,并尝试在该文本标记中查找部分
    
    sections = re.findall("^==([^=].*)==", pagetext, re.M)
    
    re.findall(r'(?<!=)==(?!=)(.*?)(?<!=)==(?!=)', pagetext)
    # (?<!...) only matches if not preceded by ...
    # (?!...) only matches if not followed by ...
    # (.*?) the captured group itself, anything matched non-greedily