Pada dasarnya, saya meminta pengguna untuk memasukkan string teks ke konsol, tetapi string tersebut sangat panjang dan mencakup banyak jeda baris. Bagaimana saya akan mengambil string pengguna dan menghapus semua jeda baris untuk membuatnya menjadi satu baris teks. Metode saya untuk mendapatkan string sangat sederhana.
string = raw_input("Please enter string: ")
Apakah ada cara berbeda yang harus saya ambil string dari pengguna? Saya menjalankan Python 2.7.4 di Mac.
PS Jelas saya seorang noob, jadi bahkan jika suatu solusi bukan yang paling efisien, yang menggunakan sintaksis paling sederhana akan dihargai.
strip
menghapus spasi putih di awal dan akhir string, bukan di dalam string ...Jawaban:
Bagaimana Anda memasuki jeda baris
raw_input
? Tapi, begitu Anda memiliki string dengan beberapa karakter di dalamnya Anda ingin menyingkirkan, hanyareplace
mereka.Pada contoh di atas, saya mengganti semua spasi. String
'\n'
mewakili baris baru. Dan\r
mewakili pengembalian carriage (jika Anda berada di windows, Anda mungkin mendapatkan ini dan yang keduareplace
akan menanganinya untuk Anda!).pada dasarnya:
Perhatikan juga, itu adalah ide yang buruk untuk memanggil variabel Anda
string
, karena ini membayangi modulstring
. Nama lain saya akan menghindari tapi akan senang untuk menggunakan kadang-kadang:file
. Untuk alasan yang sama.sumber
\r
carriage return. Saya sudah mencoba semua metode untuk menghapus\n
tetapi masih belum menangkap\r
karakter.string
, tetapi untuk alasan yang sama Anda tidak ingin menggunakan nama variabelstr
.\n
tetapi tidak\r\n
.Anda dapat mencoba menggunakan penggantian string:
sumber
Anda dapat membagi string tanpa arg pemisah, yang akan memperlakukan spasi kosong berturut-turut sebagai pemisah tunggal (termasuk baris baru dan tab). Kemudian bergabunglah menggunakan spasi:
https://docs.python.org/2/library/stdtypes.html#str.split
sumber
diperbarui berdasarkan
Xbello
komentar:baca lebih lanjut di sini
sumber
rstrip("\r\n")
rstrip('\r\n')
tidak cukup dan harus pergi dengan:my_string.rstrip('\r\n').replace('\n', ' ')
Pilihan lain adalah regex:
sumber
r'[\n\r]+'
atau bahkanr'\s+'
untuk mengganti spasi putih dengan satu spasi.Metode yang mempertimbangkan
dibutuhkan multi-line string yang mungkin berantakan misalnya
dan menghasilkan string satu baris yang bagus
UPDATE: Untuk memperbaiki beberapa karakter baris baru yang menghasilkan ruang berlebihan:
Ini juga berfungsi sebagai berikut
test_str = '\nhej ho \n aaa\r\n\n\n\n\n a\n '
sumber
Jika ada yang memutuskan untuk menggunakan
replace
, Anda harus mencobar'\n'
gantinya'\n'
sumber
r
("string baku literal"). Sayangnya, saya tidak tahu mengapa)Masalahnya dengan rstrip adalah bahwa ia tidak bekerja dalam semua kasus (seperti yang saya sendiri telah melihat beberapa). Sebagai gantinya Anda dapat menggunakan - text = text.replace ("\ n", "") ini akan menghapus semua baris baru \ n dengan spasi.
Terima kasih sebelumnya, teman-teman untuk upvotes Anda.
sumber