Python:删除所有空格和'\n';串
我无法删除字符串中的空格和“\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
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)'