提取两个多行定界符之间的内容并检查空值 - python

可以说我有一个这样的输入文件:

#Backup TOC
boot.tar.gz    /boot/

#Filesystems
/boot               /dev/mapper/VolGroup-lv_root xfs

#Devices
/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:0-part1 PHY /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:0

#UnhandledFS
/var/
/var/log
/var/log/audit
/var/tmp

我想提取每个#header之间的内容(最后一个#UnhandledFS可以忽略),提取后我必须检查是否有任何可用的条目。

下面的代码我用来提取两个#header之间的内容。但是,这里不再重复

lines = open("./input").readlines()
re.compile('#\w+(.*?)#\w+', re.DOTALL | re.M).findall(''.join(lines))

参考方案

正则表达式的问题在于它消耗了“ end”头,从而导致它跳过#Filesystems并弄乱了您的匹配项。

您需要的称为"lookahead"-这是一种匹配模式而不消耗模式的方法。

这是一个适合您的正则表达式:

re.compile(r'#[^\n]*\n([^#]*)(?=#)', re.DOTALL | re.M).findall(''.join(lines))

它还解决了匹配项中包含带有空格的标头的问题,例如示例中的第一个标头:单词TOC将成为匹配项的一部分。

但是,如果您希望对正则表达式进行最小修复,那么这也将起作用(TOC部分除外):

re.compile('#\w+(.*?)(?=#\w+)', re.DOTALL | re.M).findall(''.join(lines))

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

re.findall不返回全场比赛吗? - python

我有一个包含一堆字符串的文件,例如“ size = XXX;”。我第一次尝试使用python的re模块,并且对以下行为感到有些困惑:如果我在正则表达式中使用管道作为“或”,我只会看到返回的匹配项。例如。:>>> myfile = open('testfile.txt','r').read() >…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。