在Python中从stdin获取LDAP属性

在Python中从stdin获取LDAP属性,python,text,ldap,Python,Text,Ldap,我有一个LDAP查询,我不太精通Python中的文本处理。我通过stdin将它发送到我的脚本中,我可以读出它,但是考虑到它是一行,我对如何获取协议的价值更感困惑。给定protocol=HTTP,我希望将值存储在分隔符之后 我的stdin看起来像(但不完全是): 我可以保证,我可以通过以下方式找到: for line in sys.stdin: if 'protocol' in line: print "Protocol found" 我下一步有什么想法或建议吗 li

我有一个LDAP查询,我不太精通Python中的文本处理。我通过stdin将它发送到我的脚本中,我可以读出它,但是考虑到它是一行,我对如何获取协议的价值更感困惑。给定protocol=HTTP,我希望将值存储在分隔符之后

我的stdin看起来像(但不完全是):

我可以保证,我可以通过以下方式找到:

for line in sys.stdin:
     if 'protocol' in line:
         print "Protocol found"
我下一步有什么想法或建议吗

line_dict
for line in sys.stdin:
    parts = line.split(",")
    line_dict = dict(map(str.strip,part.split("=")) for part in parts)
    print line_dict['protocol']
公平地说,我没有测试它,所以可能会有一些小的语法错误,但类似的东西可能是你想要的。然而,如果你只是想要协议

import re
for line in sys.stdin:
     if 'protocol' in line:
         print re.findall("protocol\s*=([^,]*)",line)

杰出的我甚至没有想到用正则表达式来解决我的问题。这简化了拆分文本的多个for循环的过程。谢谢我唯一的问题是它创建了一个列表而不是一个变量。如果我希望LDAP查询中多次列出“protocol”,那就太好了,但事实并非如此。当然,仍然可以正常工作。您可以轻松使用搜索。。。但是它会返回一个匹配对象而不是字符串…是的。因为我只希望在LDAP查询中显示一个实例,所以我只设置protocoltmp=re.findall(…),然后设置protocoltmp=protocoltmp[0],它给了我一个字符串值。
import re
for line in sys.stdin:
     if 'protocol' in line:
         print re.findall("protocol\s*=([^,]*)",line)