如何提取出一段文本中的特定内容。

要提取文本当中每一条规范的内容,文本里类似这样子:

text_sample=‘10 燃机电厂10.1 建(构)筑物的火灾危险性分类及其耐火等级10.1.1 生产的火灾危险性应根据生产中使用或产生的物质性质及其数量等因素分类,储存物品的火灾危险性应根据储存物品的性质和储存物品中的可燃物数量等因素分类,二者均应符合表10.1.1的规定。10.1.2 主厂房防火分区的最大允许建筑面积不应大于6台机组的建筑面积;其他厂房(仓库)的层数和每个防火分区的允许建筑面积应符合现行国家标准《建筑设计防火规范》GB 50016的有关规定。’

再次感谢@溪水人家提供的代码。

def search_content(text_sample):
    item_no_re = re.compile('[^表图]\d+\s*[.\.]\s*\d+\s*[.\.]\s*\d+\s*')
    item_location = []  # store the item location
    for m in item_no_re.finditer(text_sample):
        # some item have similar item number but not like 表...
        item_location.append(m.start()+1)

    # print the matched items
    for inx, ele in enumerate(item_location[:-1]):
        print(text_sample[ele:item_location[inx+1]])

    # print the last matched one
    print(text_sample[item_location[-1]:])
    print('process done')

在调试的时候发现程序输出如下:
”10.1.1 生产的……二者均应符合表1"
“0.1.1的规定。”
“10.1.2 主厂房防火分区的最……”
问题一:
显然正则匹配的时候把第一条拆分成了两条,特别是类似“11.1.1”、“12.1.2”这样XX.X.X的,正则不太熟练,尝试修改了多次还是不行,?自己懂得太少了,还要继续努力。
问题二:
另外,我发现如果在X.X.X之前没有其他文字的话匹配出来会丢掉第一条内容。
像这样的文本:

text_sample = "5.1.1 中小学校的教学……教学辅助用房应包括普通教室、专用教室、公共教学用房及其各自的辅助用房。5.1. 2 中小学校专……技术教室等。5.1.3 中小学校的公共教学………应包括合班教室、师办公室。

(ps:这两个都是影响不太大的小问题,出现次数较少,可以人工矫正,第二个问题可以在提取之前,在前面加两个空格就解决了)

你可能感兴趣的:(如何提取出一段文本中的特定内容。)