Pada dasarnya, saya'm meminta pengguna untuk input string teks ke console, tapi string yang sangat panjang dan mencakup banyak jeda baris. Bagaimana saya akan membawa pengguna's string dan menghapus semua baris untuk membuat satu baris teks. Saya metode untuk memperoleh string adalah sangat sederhana.
string = raw_input("Please enter string: ")
Apakah ada cara yang berbeda saya harus meraih string dari pengguna? I'm menjalankan Python 2.7.4 pada Mac.
P. S. saya dengan Jelas'm noob, sehingga bahkan jika solusi isn't yang paling efisien, salah satu yang paling sederhana sintaks akan dihargai.
Bagaimana anda memasukkan jeda baris dengan raw_input
? Namun, setelah anda memiliki sebuah string dengan beberapa karakter di dalamnya anda ingin menyingkirkan, hanya ganti
mereka.
>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>
Dalam contoh di atas, saya diganti semua ruang. String '\n'
merupakan baris baru. Dan \r
merupakan kereta kembali (jika anda're pada windows, anda mungkin akan mendapatkan ini dan kedua menggantikan
akan menangani mereka untuk anda!).
pada dasarnya:
# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
Perhatikan juga, bahwa itu adalah ide yang buruk untuk memanggil variabel string
, karena hal ini bayangan modul string
. Nama lain I'd hindari tapi akan senang untuk menggunakan kadang-kadang: file
. Untuk alasan yang sama.
Anda dapat mencoba menggunakan mengganti string:
string = string.replace('\r', '').replace('\n', '')
Anda dapat membagi string dengan pemisah arg, yang akan memperlakukan berturut-turut spasi tunggal pemisah (termasuk baris dan tab). Kemudian bergabung menggunakan ruang:
In : " ".join("\n\nsome text \r\n with multiple whitespace".split())
Out: 'some text with multiple whitespace'
Metode yang mempertimbangkan
dibutuhkan seperti multi-line string yang mungkin berantakan misalnya.
test_str = '\nhej ho \n aaa\r\n a\n '
dan menghasilkan nice one-line string
>>> ' '.join([line.strip() for line in test_str.strip().splitlines()])
'hej ho aaa a'
UPDATE:
Untuk memperbaiki beberapa baru-karakter baris memproduksi berlebihan spasi:
' '.bergabung([baris.strip() untuk baris di test_str.strip().splitlines() jika garis.strip()])
Ini bekerja untuk mengikuti terlalu
test_str = '\nhej ho \n aaa\r\n\n\n\n\n\n '
Masalah dengan rstrip adalah bahwa hal itu tidak bekerja di semua kasus (seperti saya sendiri telah melihat beberapa). Sebagai gantinya anda dapat menggunakan - teks= teks.mengganti("\n"," ") ini akan menghapus semua baris baru \n dengan ruang.
Terima kasih sebelumnya kepada kalian untuk anda upvotes.