需要在python中获得预期的输出(问题在说明中说明)

时间:2018-08-30 11:45:07

标签: python regex python-3.x

我正在使用 Python中的正则表达式开发数据提取器。 我卡住了我正在使用正则表达式创建的其他代码的地方,但是下面提到的代码如下:

正则表达式代码:

regexCode='^about_company:\n[\s\S]+?[A-Z]:'

当我在python中运行时,以上代码无法正常工作,我犯了一个错误,因为正则表达式代码正在正确运行here

预期输出:

The output should look like this is terminal of pycharm

很抱歉,由于信誉问题,我无法直接放置图片

Python代码:

import re

filename = open('textFile.txt','r')
rege = '^about_company:[\s\S]+?[A-Z]:|ABOUT COMPANY:[\s\S]+?[A-Z]:'
for data in filename:
    matches = re.findall(rege, data, re.MULTILINE)
    if matches:
        print(matches)

当我尝试通过将数据存储为文本来打印数据时,它可以工作,但是当我尝试从文件中读取数据时,它显示了空列表。 文本文件与regex101的链接中的相同。 我需要解决方案,请帮助

1 个答案:

答案 0 :(得分:0)

将整个文件读入内存并针对整个文本运行正则表达式:

import re

f = open('28985133.dat','r')
data = f.read()                # Read the file contents into a var
rege = r'^about_company:[\s\S]+?[A-Z]:|ABOUT COMPANY:[\s\S]+?[A-Z]:'
matches = re.findall(rege, data, re.MULTILINE) # Collect matches
for s in matches:              # Loop through matches
    print(s)                   # Print matches