删除Python字符串中的换行符/空字符

时间:2013-06-07 09:03:33

标签: python newline popen

嗯,这可能听起来很重复,但我已尝试过所有可能性,例如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>

9 个答案:

答案 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)不建议使用Truelist作为变量名称,因为它们是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