web-dev-qa-db-ja.com

スペース/タブ/改行を削除-python

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

簡単なことのように思えますが、ここで何かが欠けています。何かをインポートする必要がありますか?

73
bachurim09

sepまたはsep=Noneなしでstr.split([sep[, maxsplit]])を使用します。

docs から:

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

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

>>> 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()で末尾のスペースを削除できます。

42
MattH
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
10
Manish Mulani

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

出力:

すべての空白、改行、タブを削除したい

8

この関連する質問への回答をご覧ください: 空白を削除する方法(タブを含む)?

strip()は、すべての文字ではなく、先頭と末尾の文字のみを削除します。

6
dckrooney

これにより、タブ、改行、スペースのみが削除されます。

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)

OUTPUT:

Iwantoすべての空白、改行、タブを削除する

良い一日!

6
The Gr8 Adakron

もっと複雑なものは他にないので、助けてくれたのでこれを共有したいと思いました。

これは私が最初に使用したものです:

import requests
import re

url = 'https://stackoverflow.com/questions/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 = 'https://stackoverflow.com/questions/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です

1
JayRizzo

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

ここに私がやることがあります:

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

または、単一行のソリューションが無益に長くなるように削除するものがたくさんある場合:

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