Saya mencoba untuk menghapus semua spasi / tab / baris baru di python 2.7 di Linux.
Saya menulis ini, yang seharusnya melakukan pekerjaan:
myString="I want to Remove all white \t spaces, new lines \n and tabs \t"
myString = myString.strip(' \n\t')
print myString
keluaran:
I want to Remove all white spaces, new lines
and tabs
Sepertinya hal yang sederhana untuk dilakukan, namun saya melewatkan sesuatu di sini. Haruskah saya mengimpor sesuatu?
python
string
python-2.7
strip
bachurim09
sumber
sumber
Jawaban:
Gunakan
str.split([sep[, maxsplit]])
tanpasep
atausep=None
:Dari dokumen :
Demo:
>>> myString.split() ['I', 'want', 'to', 'Remove', 'all', 'white', 'spaces,', 'new', 'lines', 'and', 'tabs']
Gunakan
str.join
pada daftar yang dikembalikan untuk mendapatkan keluaran ini:>>> ' '.join(myString.split()) 'I want to Remove all white spaces, new lines and tabs'
sumber
Jika Anda ingin menghapus beberapa item spasi putih dan menggantinya dengan spasi tunggal, cara termudah adalah dengan regexp seperti ini:
>>> 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 '
Anda kemudian dapat menghapus spasi tambahan dengan
.strip()
jika Anda mau.sumber
Gunakan perpustakaan ulang
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
Keluaran:
sumber
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
sumber
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)
KELUARAN:
Selamat siang!
sumber
Solusi di atas menyarankan penggunaan regex tidak ideal karena ini adalah tugas kecil dan regex membutuhkan lebih banyak overhead sumber daya daripada kesederhanaan tugas yang dibenarkan.
Inilah yang saya lakukan:
myString = myString.replace(' ', '').replace('\t', '').replace('\n', '')
atau jika Anda memiliki banyak hal untuk dihapus sehingga solusi baris tunggal akan menjadi sangat panjang:
removal_list = [' ', '\t', '\n'] for s in removal_list: myString = myString.replace(s, '')
sumber
Karena tidak ada hal lain yang lebih rumit, saya ingin membagikan ini karena itu membantu saya.
Ini yang awalnya saya gunakan:
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))
Hasil yang Tidak Diinginkan:
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
Inilah yang saya ubah menjadi:
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'))))
Hasil yang diinginkan:
<!DOCTYPE html> <html itemscope itemtype="http://schema.org/QAPage" class="html__responsive"> <head> <title>string - Strip spaces/tabs/newlines - python - Stack Overflow</title>
Regex persis yang telah disebutkan @MattH, adalah yang berhasil bagi saya dalam menyesuaikannya ke dalam kode saya. Terima kasih!
Catatan: Ini
python3
sumber
Bagaimana dengan one-liner yang menggunakan pemahaman daftar dalam gabungan?
>>> foobar = "aaa bbb\t\t\tccc\nddd" >>> print(foobar) aaa bbb ccc ddd >>> print(''.join([c for c in foobar if c not in [' ', '\t', '\n']])) aaabbbcccddd
sumber