删除空格/制表符/换行符-python


94

我正在尝试在Linux上的python 2.7中删除所有空格/制表符/换行符。

我写了这个,应该做的工作:

myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = myString.strip(' \n\t')
print myString

输出:

I want to Remove all white   spaces, new lines 
 and tabs

这似乎很简单,但是我在这里缺少一些东西。我应该导入什么东西吗?


请查看以下相关问题的答案:stackoverflow.com/questions/1185524/…strip()仅删除前导和尾随字符,而不删除所有字符。
dckrooney,2012年


1
这对我有用,来自:[如何修剪空白(包括制表符)?] [1] s = s.strip('\ t \ n \ r')[1]:stackoverflow.com/questions/1185524 / ...
stamat 2013年

Answers:


124

使用str.split([sep[, maxsplit]])没有sepsep=None

文档

如果sep未指定或is None,则应用不同的拆分算法:连续的空白行被视为单个分隔符,并且如果字符串的开头或结尾处有空白,则结果在开头或结尾将不包含空字符串。

演示:

>>> myString.split()
['I', 'want', 'to', 'Remove', 'all', 'white', 'spaces,', 'new', 'lines', 'and', 'tabs']

使用str.join返回的名单上得到这个输出:

>>> ' '.join(myString.split())
'I want to Remove all white spaces, new lines and tabs'

57

如果要删除多个空格项并将其替换为单个空格,最简单的方法是使用如下所示的regexp:

>>> import re
>>> myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
>>> re.sub('\s+',' ',myString)
'I want to Remove all white spaces, new lines and tabs '

然后,您可以根据需要删除尾随空格.strip()


13

使用re

import re
myString = "I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = re.sub(r"[\n\t\s]*", "", myString)
print myString

输出:

想要删除所有空格,换行符和标签


1
这是@ TheGr8Adakron给出的原始答案的更正,而不是重复
Jesuisme


10

这只会删除选项卡,换行符,空格以及其他所有内容。

import re
myString = "I want to Remove all white \t spaces, new lines \n and tabs \t"
output   = re.sub(r"[\n\t\s]*", "", myString)

输出:

Iwanto删除所有空格,换行符和标签

美好的一天!


1
感谢您的解决方案-我认为需要进行较小的更正,它应该是“ +”而不是“ *”。
Sajad Karim

5

上述建议使用正则表达式的解决方案并不理想,因为这是一个很小的任务,并且正则表达式需要更多的资源开销,而不是任务的简单性所能证明的。

这是我的工作:

myString = myString.replace(' ', '').replace('\t', '').replace('\n', '')

或者如果您要删除一堆东西,那么单行解决方案将很长:

removal_list = [' ', '\t', '\n']
for s in removal_list:
  myString = myString.replace(s, '')

2

由于没有其他更复杂的内容,因此我想分享一下,因为它对我有帮助。

这是我最初使用的:

import requests
import re

url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
print("{}".format(r.content))

不良结果:

b'<!DOCTYPE html>\r\n\r\n\r\n    <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive">\r\n\r\n    <head>\r\n\r\n        <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>\r\n        <link

这就是我将其更改为:

import requests
import re

url = '/programming/10711116/strip-spaces-tabs-newlines-python' # noqa
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
regex = r'\s+'
print("CNT: {}".format(re.sub(regex, " ", r.content.decode('utf-8'))))

所需结果:

<!DOCTYPE html> <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive"> <head> <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>

@MattH提到的精确正则表达式对我很有效,可以将其适合我的代码。谢谢!

注意:这是 python3

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.