我想得到所有“主机名匹配”的输出
#!/usr/bin/env python
from __future__ import print_function
for Y in open("/tmp/inventory_file"):
if 'hostX' in Y:
value = Y.split('|')[1]
print(value,sep=',')我有多个火柴排行打印。如何用逗号分隔的单行打印它们?
发布于 2018-08-24 05:09:22
您正在读取的行包含特殊字符,可以是"\r\n“字符,即车符、返回字符和新行字符。
您可以在拆分行之前使用strip()方法删除末尾的"\r\n“。此外,您还需要在打印方法中使用end="“参数。
使用下面的示例:
from __future__ import print_function
for Y in open("/tmp/inventory_file"):
if 'hostX' in Y:
value = Y.strip().split('|')[1]
print(value,end=', ')下面是为您的评论编辑的部分::
由于要在循环中打印输出,所以将其存储到变量并不是一个好主意,而是可以使用列表来存储值,如果需要,还可以从该列表中生成一个字符串变量。见下面的例子
from __future__ import print_function
result = []
for Y in open("/tmp/inventory_file"):
if 'hostX' in Y:
result.append(Y.strip().split('|')[1])
print(result) #printing output as list
s = ", ".join(result) #creating output as single string variable
print(s) #printing output as string variable发布于 2018-08-24 03:32:29
这很容易!value = Y.split('|')[1]会给你一个匹配的列表,然后选择第二个。
我们需要的是列表,所以删除[1]。
现在,打印功能:
打印(*objects,sep=‘',end='\n',file=sys.stdout,flush=False)
对象之前的*,意味着您可以随心所欲地放置任意数量的参数,例如
print('hello', 'pal', sep=' ')但是,如果要将列表转换为多个参数,则必须在此之前放置一个*。
所以最后,它给了我们
value = Y.split('|')
print(*value,sep=',')发布于 2018-08-24 04:53:03
sep=的意思是它指定在两个值之间放置什么。
>>> print('moo', 'bar', sep=',')
moo,bar若要指定使用不同的行终止符,则需要使用end=','。但实际上,收集和打印这些值的正确方法可能只是将它们收集到一个列表中,并在完成后打印列表。
values = []
for Y in open("/tmp/inventory_file"):
if 'hostX' in Y:
values.append(Y.split('|')[1])
print(','.join(values))https://stackoverflow.com/questions/51996833
复制相似问题