Python:删除所有空格和' \ n'在字符串

时间:2016-01-30 07:42:04

标签: python

我无法删除空格和' \ n'在字符串中。代码在这里:

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

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

5 个答案:

答案 0 :(得分:2)

您需要为某些内容指定{ "_id" : ObjectId("568073e5bf244c701d000179"), "text" : "Jose", "version" : 2, "taxonomyid" : "56803181bf244c701d000170", "orderValue" : 1600, "expandable" : false, "nativeLanguage" : "en", "i18n" : { "en" : { "text" : "Jose", "locale" : "en" } }, } 。字符串是不可改变的;此方法调用更改src.prefix1.prefix.packagename1 src.prefix1.prefix.packagename2

答案 1 :(得分:1)

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

>>> text = ' '.join(text.split())
'(ROOT (SINV (PP (IN in) (PP (IN between)'

此外,要杀死所有空白

text = ''.join(text.split())

或者不覆盖text

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)'    

答案 2 :(得分:0)

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

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


text = text.translate(None, ' \n\t')
print text

<强> 注: 只是不注意字符串是不可变的的时刻,你不能改变字符串而不是使用变异值,你必须像上面的代码一样重新分配字符串:{ {1}}。

祝你好运!

答案 3 :(得分:0)

您可以使用正则表达式:

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)

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

答案 4 :(得分:0)

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

# Python 2:
text = text.translate(None, ' \n')

# Python 3:
spacedeleter = str.maketrans(dict.fromkeys(' \n'))  # Create this only once

text = text.translate(spacedeleter)  # Do this as often as you need, reusing same spacedeleter