【问题标题】:Regex capture 2 lines above regex match正则表达式捕获正则表达式匹配上方的 2 行
【发布时间】:2018-12-30 01:58:07
【问题描述】:

比赛结束后需要帮助获取上述单词(ZYGOMA、ZOMA、ZYGMA) n. m.(名词阳性)和 n。 f.(名词阴性)被发现。 我尝试了不同的标志,如 multiline 和 dotall,但仍然无法获得上面的主要单词。任何帮助将不胜感激

import re


def main():
    mytext = open("m.txt")
    mypattern = re.compile('n. (m.|f.)')
    for line in mytext:
        match = re.search(mypattern, line)
        if match:
            print(match.group())

if __name__ == "__main__":
    main()

我用作示例的文本是:

颧骨

n.米。 T. d'Anatomie 。 Os de la pommette de la joue。

祖玛

n.米。 T. d'Anatomie 。 Os de la pommette de la joue。

ZYGMA

n.米。 T. d'Anatomie 。 Os de la pommette de la joue。

我将解析的主文件如下所示:

【问题讨论】:

    标签: python regex


    【解决方案1】:

    暗示要搜索的词都是大写的:

    import re
    
    text = """
        ZYGOMA
    
        n. m. T. d'Anatomie . Os de la pommette de la joue.
    
        ZOMA
    
        n. m. T. d'Anatomie . Os de la pommette de la joue.
    
        ZYGMA
    
        n. m. T. d'Anatomie . Os de la pommette de la joue.
    
        A B C
    
        n. m. T. d'Anatomie . Os de la pommette de la joue.
    """
    
    g = re.findall(r'([A-Z][A-Z ]*)\s+(?=n\. m|f)', text)
    print(g)
    

    将打印:

    ['ZYGOMA', 'ZOMA', 'ZYGMA', 'A B C']
    

    对于 Unicode 大写单词,解决方案在这里:Python regex for unicode capitalized words

    【讨论】:

    • 你是救生员。谢谢安德烈
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多