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
簡単なことのように思えますが、ここで何かが欠けています。何かをインポートする必要がありますか?
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'
複数の空白項目を削除して単一のスペースに置き換える場合、最も簡単な方法は次のような正規表現を使用することです。
>>> 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()
で末尾のスペースを削除できます。
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
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
出力:
すべての空白、改行、タブを削除したい
この関連する質問への回答をご覧ください: 空白を削除する方法(タブを含む)?
strip()は、すべての文字ではなく、先頭と末尾の文字のみを削除します。
これにより、タブ、改行、スペースのみが削除されます。
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すべての空白、改行、タブを削除する
良い一日!
もっと複雑なものは他にないので、助けてくれたのでこれを共有したいと思いました。
これは私が最初に使用したものです:
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
です
正規表現の使用を推奨する上記のソリューションは、これが非常に小さなタスクであり、正規表現がタスクの単純さを正当化するよりも多くのリソースオーバーヘッドを必要とするため、理想的ではありません。
ここに私がやることがあります:
myString = myString.replace(' ', '').replace('\t', '').replace('\n', '')
または、単一行のソリューションが無益に長くなるように削除するものがたくさんある場合:
removal_list = [' ', '\t', '\n']
for s in removal_list:
myString = myString.replace(s, '')