4

好吧,这听起来可能是重复的,但我已经尝试了所有的可能性,比如str.strip(), str.rstrip(), str.splitline(), 还有 if-else 检查:

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>
4

9 回答 9

3

我建议您的情况:

if str.strip():
    print str

代替

if str is not '' or str is not '\n':
    print str

重要提示:必须使用s == "..."而不是 with来测试字符串相等性s is "..."

于 2013-06-07T09:10:04.407 回答
1

这是应用德摩根定理的一个有趣案例。

您想打印不是 '' 或 \n 的字符串。

那是,if str=='' or str =='\n', then don't print.

因此,在否定上述陈述的同时,您将不得不应用德摩根定理。

所以,你将不得不使用if str !='' and str != '\n' then print

于 2013-06-07T09:06:24.450 回答
1
filter(str.strip, ['output1', '', 'output2', 'output3', '', '', '',''])
于 2013-06-07T10:17:41.970 回答
0

1) 表达式str is not '' or str is not '\n', 不符合您的目的,因为它str在 whenstr不等于''或 whenstr不等于''
Say时打印str='',表达式归结为if False or True会导致True

2) 不建议使用liststr作为变量名称,因为它们是 python 的本机数据类型

3)is可能有效,但比较对象的身份而不是其值

因此,使用!=而不是与运算符is一起使用and

 if str!='' and str!='\n':
       print str

输出

output1
output2
output3
于 2014-09-15T12:46:31.423 回答
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 '
于 2013-06-07T10:07:55.413 回答
0

实际上,只需拆分即可

os.popen(command_arg).read().split()
于 2014-09-17T12:35:41.377 回答
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
于 2013-06-07T09:20:52.263 回答
0
于 2013-06-07T09:10:23.880 回答
-1

使用“和”而不是“或”

 if str is not '' and str is not '\n':
       print str
于 2013-06-07T09:12:45.830 回答