删除具有csv-fi特定关键字的行

2024-10-01 07:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的数据文件,我需要删除具有特定关键字的行。在

下面是我使用的文件示例:

User Name     DN
MB31212       CN=MB31212,CN=Users,DC=prod,DC=trovp,DC=net
MB23423       CN=MB23423 ,OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
MB23424       CN=MB23424 ,CN=Users,DC=prod,DC=trovp,DC=net
MB23423       CN=MB23423,OU=DNA,DC=prod,DC=trovp,DC=net
MB23234       CN=MB23234 ,OU=DNA,DC=prod,DC=trovp,DC=net

以下是我导入文件的方式:

^{pr2}$

我怎么能

  1. 例如,删除DN列中包含“OU=DNA”的所有行?在
  2. 如何删除DN列中的第一个属性“CN=x”,而不删除该列中的其余数据?在

我想得到如下所示,删除包含“OU=DNA”的2行,并从每行中删除“CN=x”:

User Name     DN
MB31212       CN=Users,DC=prod,DC=trovp,DC=net
MB23423       OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
MB23424       CN=Users,DC=prod,DC=trovp,DC=net

Tags: 文件namenetouproddccnusers
2条回答

你可以尝试用这两步过滤作为你的逻辑。使用str.contains方法筛选出带有OU=DNA的行,并使用带有正则表达式的str.replace方法来修剪前导的CN=x

newDf = df.loc[~df.DN.str.contains("OU=DNA")]
newDf.DN = newDf.DN.str.replace("^CN=[^,]*,", "")
newDf

    UserName    DN
0   MB31212 CN=Users,DC=prod,DC=trovp,DC=net
1   MB23423 OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
2   MB23424 CN=Users,DC=prod,DC=trovp,DC=net

对正则表达式稍作分解:^表示字符串的开头,后面跟着CN=,并使用[^,]*,捕获模式,直到第一个逗号为止

为了阅读你给我的文件样本,我使用了:

df = pd.read_csv('sample.csv', sep='     ', encoding='latin1', engine="python")

然后:

^{pr2}$

给出了期望的结果:

    User Name   DN
0   MB31212     CN=Users,DC=prod,DC=trovp,DC=net
1   MB23423     OU=Generic Mailbox,DC=prod,DC=trovp,DC=net
2   MB23424     CN=Users,DC=prod,DC=trovp,DC=net

相关问题 更多 >