我有一个巨大的数据文件,其中包含以下格式的数据:
[06/Nov/2016:23:24:03 +0100] BIND REQ conn=8349228 op=0 msgID=1 version=3 type=SIMPLE dn="uid=user1,ou=Org1,ou=example,o=com"
[06/Nov/2016:23:24:03 +0100] BIND REQ conn=8349229 op=0 msgID=1 version=3 type=SIMPLE dn="uid=user2,ou=Org1,ou=example,o=com"
[06/Nov/2016:23:24:04 +0100] BIND REQ conn=8349230 op=0 msgID=1 version=3 type=SIMPLE dn="uid=user3,ou=Org1,ou=example,o=com"
[06/Nov/2016:23:24:04 +0100] BIND REQ conn=8349231 op=0 msgID=1 version=3 type=SIMPLE dn="uid=user4,ou=Org1,ou=example,o=com"
我想从这个文本文件中提取UID,结果输出应该如下所示:
user1
user2
user3
user4
我使用此代码提取这些值:
with open("C:\\test") as fh:
for line in fh:
print(str(str(line.split(" ")[9]).split("=")[2]).split(",")[0])
但我得到了一个错误:
IndexError: list index out of range
我只建议运行调试器,看看它在
fh
中哪个line
崩溃。也许太明显了,但很可能有用。你知道吗粗略猜测您的输入文件包含空行或不符合数据格式的行。试试下面
您可以使用正则表达式:
下面是一个示例,其中包含数据文件中的一行文本。你知道吗
工作示例:http://www.codeskulptor.org/#user42_0jDArlYoNk_0.py
更新
如果您的字符串不包含用户标识,则可能会遇到错误。因此,您可以尝试
try/except
或类似的方法:可以找到代码 http://www.codeskulptor.org/#user42_0jDArlYoNk_1.py
相关问题 更多 >
编程相关推荐