嗯,这可能听起来很重复,但我已尝试过所有可能性,例如str.strip()
,str.rstrip()
,str.splitline()
,
如果 - 否则检查如下:
if str is not '' or str is not '\n':
print str
但我不断在输出中获得换行符。
我正在存储os.popen的结果:
list.append(os.popen(command_arg).read())
当我print list
时,我得到了
['output1', '', 'output2', 'output3', '', '', '','']
我的目标是获得
output1
output2
output3
而不是
output1
<blank line>
output2
output3
<blank line>
<blank line>
答案 0 :(得分:2)
我建议你的情况:
if str.strip():
print str
而不是
if str is not '' or str is not '\n':
print str
重要:必须使用s == "..."
而不是s is "..."
来测试字符串相等性。
答案 1 :(得分:1)
这是应用De-Morgan的Theorm的一个有趣案例。
您要打印的字符串不是''或\ n。
即if str=='' or str =='\n', then don't print.
因此,在否定上述陈述时,你将不得不应用de morgan的理论。
因此,您必须使用if str !='' and str != '\n' then print
答案 2 :(得分:1)
filter(str.strip, ['output1', '', 'output2', 'output3', '', '', '',''])
答案 3 :(得分:0)
如果我正确地理解了你的问题,你就会找到类似的东西:
from string import whitespace
l = ['output1', ' ', 'output2', 'output3', '\n', '', '','']
print('\n'.join(c for c in l if c not in whitespace))
输出:
output1 output2 output3
顺便说一句:我想比较字符串,请使用==
运算符。 is
运算符会比较对象的 id
。来自文档:
is
运营商:
'is'运算符比较两个对象的标识; id() function返回一个表示其标识的整数。
id
对象:
对象的“标识”。这是一个保证的整数 这个物体在其生命周期中是独一无二的。两个对象 非重叠生命周期可能具有相同的id()值。
答案 4 :(得分:0)
''
是False
,因此可以执行以下操作:
>>> mylist = ['output1', '', 'output2', 'output3', '', '', '', '', '\n']
>>> [i for i in mylist if i and i != '\n']
['output1', 'output2', 'output3']
或者,单独打印每个:
>>> for i in mylist:
... if i and i != '\n':
... print i
...
output1
output2
output3
答案 5 :(得分:0)
为了删除您可以使用的所有空字符:
>>> ll=['1','','']
>>> filter(None, ll)
output : ['1']
请试试这个:
>>> l=['1','']
>>> l.remove('')
>>> l
['1']
或尝试此操作,它将从字符串中删除所有特殊字符。
>>>import re
>>> text = "When asked about Modi's possible announcement as BJP's election campaign committee head, she said that she cannot conf
irm or deny the development."
>>> re.sub(r'\W+', ' ', text)
'When asked about Modi s possible announcement as BJP s election campaign committee head she said that she cannot confirm or deny the d
evelopment '
答案 6 :(得分:0)
1)当str is not '' or str is not '\n'
不等于str
或{{1}时,表达式str
无法满足您的目的,因为它打印''
}}不等于str
说''
,表达式归结为str=''
,这将导致if False or True
2)不建议使用True
和list
作为变量名称,因为它们是python的本机数据类型
3)str
可能有效但比较对象的身份而不是其值
因此,使用is
而不是!=
与is
运算符一起使用
and
<强>输出强>
if str!='' and str!='\n':
print str
答案 7 :(得分:0)
实际上,只需拆分即可
os.popen(command_arg).read().split()
答案 8 :(得分:-1)
使用“和”而不是“或”
if str is not '' and str is not '\n':
print str