Python:删除所有空格和'\n';串

Python:删除所有空格和'\n';串,python,Python,我无法删除字符串中的空格和“\n”。代码如下: text = '''(ROOT (SINV (PP (IN in) (PP (IN between)''' text.replace(' ', '') print text 下一个方法调用解决方案是: text = '''(ROOT (SINV (PP (IN in) (PP (IN between)''' text = text.translate(None, ' \n\t') print

我无法删除字符串中的空格和“\n”。代码如下:

text = '''(ROOT
  (SINV
    (PP (IN in)
      (PP (IN between)'''

text.replace(' ', '')
print text

下一个方法调用解决方案是:

text = '''(ROOT
  (SINV
    (PP (IN in)
      (PP (IN between)'''


text = text.translate(None, ' \n\t')
print text
注意: 为了不让您注意到字符串是不可变的,您不能对字符串进行变异,而要处理变异后的值,您必须像上面的代码那样将字符串重新分配给自身:
text=text.translate(无),\n\t')


祝你好运

您需要将
text.replace()
分配给某个对象。字符串是不可变的;此方法调用不会更改
text

您可以使用正则表达式:

import re

text = '''(ROOT
  (SINV
    (PP (IN in)
      (PP (IN between)'''

print re.sub('\s', '', text)
它将为您提供以下输出:

(ROOT(SINV(PP(INin)(PP(INbetween)
需要指出的一点是,字符串是不可变的对象。因此,在
text
中执行的操作不会改变它。您必须将其分配给一个新字符串。如:

text = re.sub('\s', '', text)

这将为
文本
变量分配一个新字符串。

要使用一轮而不是两轮的变异,请使用
str.translate
(记住分配结果):


我不确定您的空白要求是什么,但这似乎是最好的:

>>> text = ' '.join(text.split())
'(ROOT (SINV (PP (IN in) (PP (IN between)'
另外,要删除所有空格

text = ''.join(text.split())
或不覆盖
文本

new_text = ''.join(text.split())
.split()
,默认情况下,在任何空白字符的每个序列上拆分字符串

>>> "(SINV\n    (PP ...".split()
["(SINV", "(PP", "..."]
.join()
方法使用给定字符串连接字符串列表:

>>> ''.join("(SINV\n    (PP ...".split())
"(SINV(PP..."
如果不想删除某些空格,只需重新添加:

>>> ''.join(text.split()).replace("(IN", "(IN ")
'(ROOT(SINV(PP(IN in)(PP(IN between)'    

我知道,这是最有吸引力的答案。然而,它确实假设OP想要消除所有形式的空白。。。但这可能是一个合理的假设谢谢我想大多数答案都假设。。。我将进行一些小的编辑来更改它。我认为您不需要更改代码,只需明确指出它消除了所有空白,而不仅仅是
'
'\n'
>>> ''.join(text.split()).replace("(IN", "(IN ")
'(ROOT(SINV(PP(IN in)(PP(IN between)'