【问题标题】:Extract text information between two define text提取两个定义文本之间的文本信息
【发布时间】:2016-04-22 05:02:37
【问题描述】:

我有一个包含大量文本信息的大文本文件,但我想提取两个已定义文本之间的文本。 例如

    /begin MEASUREMENT XYZ
        UBYTE
        _CNV_A_R_LINEAR_____71_CM
        1
        100.
        -40.
        160.
        FORMAT "%3.0"
        SYMBOL_LINK "XYZ" 0
/begin IF_DATA EVTRKMNBXERTBK 
    DEFAULT_RASTERS 3 3
/end IF_DATA 
    /end MEASUREMENT

即 /begin MEASUREMENT 和 /end MEASUREMENT 在这之间我想提取文本。

我的代码是:

import re
path = r"d:\xyz.txt"
file = open(path, 'r')
lines = file.read()
pattern = re.compile(r'begin MEASUREMENT[\s][\w+](.*?)end MEASUREMENT')
print re.findall(pattern, lines)

【问题讨论】:

    标签: python regex parsing


    【解决方案1】:

    使用(?s),这是将多行视为单行。所以点匹配所有字符,包括换行符。

    pattern = re.compile(r'(?s)begin MEASUREMENT[\s](.*?)end MEASUREMENT')
    

    所以试试这个,

    import re
    path = "py.txt"
    file = open(path, 'r')
    lines = file.read()
    pattern = re.compile(r'(?s)begin MEASUREMENT[\s](.*?)end MEASUREMENT')
    result = re.findall(pattern, lines)
    print result[0]
    

    已编辑

    t = "XYZ"
    pattern = re.compile(r'(?s)begin MEASUREMENT\s+((%s).*?)end MEASUREMENT'%t)
    

    【讨论】:

    • @user2030113 这对我来说很好用。它给出的结果是什么?
    • 您的解决方案对我有用。我只是想获得更具体的搜索,所以我想在搜索中包含“XYZ”。因为这些名称在文件中会有所不同。
    • 我试过了,现在可以了。 >>> t = "xyz" >>> pattern = re.compile(r'(?s)begin MEASUREMENT[\s]%s(.*?)end MEASUREMENT' %t)
    【解决方案2】:

    试试这个:

    text ="""
        /begin MEASUREMENT XYZ
            UBYTE
            _CNV_A_R_LINEAR_____71_CM
            1
            100.
            -40.
            160.
            FORMAT "%3.0"
            SYMBOL_LINK "XYZ" 0
    /begin IF_DATA EVTRKMNBXERTBK 
        DEFAULT_RASTERS 3 3
    /end IF_DATA 
        /end MEASUREMENT"""
    
    print text.split("/begin MEASUREMENT")[1].split("/end MEASUREMENT")[0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多