【发布时间】:2021-09-01 00:49:50
【问题描述】:
我有两个字符串:
machine1 19968MB 15375MB 23%
machine2 79872MB 61501MB 23%
machine3 798720MB 615014MB 23%
machine1 9968MB 15375MB 13%
machine2 19872MB 61501MB 33%
machine4 798720MB 615014MB 23%
我想比较两个字符串中存在的所有机器,为此,我正在这样做:
pat = 'machine_\S+'
machines1 = re.findall(pat, string1)
machines2 = re.findall(pat, string2)
intersect = set(machines1) & set(machines2)
newstring1 = '\n'.join(line for line in string1.splitlines() if
re.search(pat, line).group() in intersect)
newstring2 = '\n'.join(line for line in string2.splitlines() if
re.search(pat, line).group() in intersect)
Newstring1 应该是这样的:
machine1 19968MB 15375MB 23%
machine2 79872MB 61501MB 23%
还有 Newstring2 这个:
machine1 9968MB 15375MB 13%
machine2 19872MB 61501MB 33%
但问题是,有时这些机器的名称可能会更改为另一种格式,而正则表达式无法解决问题..
其他格式的示例(可以是任何格式,我认为正则表达式不是解决方案):
test_volume1 19968MB 15375MB 23%
testing_nfs 19968MB 15375MB 23%
有没有办法做到这一点,但不使用正则表达式?
【问题讨论】:
-
@anubhava 我编辑了问题,当我说格式时,我的意思是机器的名称,它可以有任何名称......
-
可以试试:
pat = r'^\S+'
标签: python regex string comparator