我有看起来像这样的数据:
/media/info/DRIVE/Animal/Stuff
Rights: _RWCEMF_ User / Group .CN=Dog.OU=Random.OU=Place.O=X.T=X.
Rights: _RWCEMF_ User / Group .CN=Cat.OU=Random.OU=Place.O=X.T=X.
/media/info/DRIVE/Tricks/Treats
Rights: _RWCEMF_ User / Group .CN=Gorilla.OU=Random.OU=Place.O=X.T=X.
Rights: _RWCEMF_ User / Group .CN=Hippo.OU=Random.OU=Place.O=X.T=X.
Rights: _R______ User / Group .CN=Dog.OU=Random.OU=Place.O=X.T=X.
/media/info/DRIVE/Private/Hideout
Rights: _RWCEMF_ User / Group .CN=Hippo.OU=Random.OU=Place.O=X.T=X.
假设这种情况持续了数千行,我想查看Dog拥有的所有权限。理想情况下,输出应如下所示:
/DRIVE/Animal/Stuff Rights: _RWCEMF_
/DRIVE/Tricks/Treats Rights: _R______
问题:这是我应该使用正则表达式解决的问题吗?我一直在做一些阅读/尝试,看来您找不到Dog,然后回溯了最近出现的/ media / info / DRIVE,因为回溯会检查静态数量的字符。
另一方面,超前查找会找到第一个匹配项,然后继续寻找第二个匹配项-即使后来在完全独立的驱动器中有数百行。
关于如何解决这个问题的任何想法?我正在用这个旋转轮子。所有搜索都指向正则表达式。
干得好:
import pandas as pd
data = []
for line in open('temp.text'):
if line.startswith('/media/'):
path = line[:-1]
else:
rights = line.split()[1]
owner = re.match('.*.CN=([^.]+).*', line).groups()[0]
row = {'path': path, 'right': rights, 'owner': owner}
data.append(row)
df = pd.DataFrame(data)
df[df.owner=='Dog']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句