スペース/タブ/改行を取り除く-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

1
役に立つかもしれない:stackoverflow.com/questions/8928557/...
newtover

1
これは私にとってうまくいきました:[空白(タブを含む)を削除する方法?] [1] s = s.strip( '\ t \ n \ r')[1]:stackoverflow.com/questions/1185524/…
stamat 2013年

回答:


124

使用str.split([sep[, maxsplit]])がないとsepsep=None

ドキュメントから:

sepが指定されていない場合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

複数の空白アイテムを削除して単一のスペースに置き換える場合、最も簡単な方法は次のような正規表現を使用することです。

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

出力:

IwanttoRemoveallwhitespaces、newlinesandtabs


1
これは、@ TheGr8Adakronによって提供された元の回答の修正であり、重複ではありません
Jesuisme

12
import re

mystr = "I want to Remove all white \t spaces, new lines \n and tabs \t"
print re.sub(r"\W", "", mystr)

Output : IwanttoRemoveallwhitespacesnewlinesandtabs

4
これにより、「;」も削除されます
2017

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)

出力:

IwantoRemoveallwhiespaces、newlinesandtabs

良い一日!


1
解決策をありがとう-マイナーな修正が必要だと思います。「*」ではなく「+」にする必要があります。
Sajad Karim、

5

正規表現の使用を示唆する上記のソリューションは、これは非常に小さなタスクであり、正規表現はタスクの単純さが正当化するよりも多くのリソースオーバーヘッドを必要とするため、理想的ではありません。

これが私がすることです:

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

または、1行のソリューションが無理に長くなるように削除することがたくさんある場合:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.