Python 列表理解中的格式打印问题
大家好,我正在尝试使用列表理解和一些过滤来清理列表。由于某种原因(暗示我),过滤无法按预期工作,我仔细检查了我的语法,并仔细检查了它,我几乎肯定它是正确的 我希望得到与此类似的输出:Python 列表理解中的格式打印问题,python,Python,大家好,我正在尝试使用列表理解和一些过滤来清理列表。由于某种原因(暗示我),过滤无法按预期工作,我仔细检查了我的语法,并仔细检查了它,我几乎肯定它是正确的 我希望得到与此类似的输出: DOMAINNAME\USERNAME 我得到的是这个 C:\python27\filename DOMAINNAME\USERNAME 上述情况表明.format类型格式在我下面的代码中不起作用 def tllocal(domain): try: out = subprocess.che
DOMAINNAME\USERNAME
我得到的是这个
C:\python27\filename
DOMAINNAME\USERNAME
上述情况表明.format类型格式在我下面的代码中不起作用
def tllocal(domain):
try:
out = subprocess.check_output(["tasklist", "/V", "/FO", "List", "/FI", "USERNAME eq {0}\*" .format(domain)])
users = [item for item in out.split() if "{0}" and "\\" in item .format(domain)]
sortedl = set(users)
print sortedl
for name in sortedl:
print name
except CalledProcessError as e:
print(e.returncode)
return sortedl
我相信是这条线造成了问题
users=[item for item in out.split()如果item.format(域)中的“{0}”和“\\”
任何帮助都将不胜感激。你是正确的,那是错误的。这句话
if "{0}" and "\\" in item .format(domain)
解析为:
(if '{0}') and ("\\" in item .format(domain))
它总是True
,因为字符串literal“{0}”
总是True
正确的书写方式是all
:
[item for item in out.split() if all(x in item for x in (domain, '\\'))]
或者简单地说是和,因为您只有两个元素:
[item for item in out.split() if domain in item and '\\' in item]
^^_非常感谢你指出这一点。我确信我是对的:(