Saya mencoba untuk menghapus 3 karakter terakhir dari string dengan python, saya tidak tahu apa karakter ini jadi saya tidak bisa menggunakan rstrip
, saya juga perlu menghapus spasi putih dan mengubahnya menjadi huruf besar
contohnya adalah:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
Ini berfungsi dan memberi saya BS12 yang saya inginkan, namun jika karakter 4 & 3 terakhir sama, saya kehilangan keduanya, misalnya jika foo = "BS11 1AA"
saya hanya mendapatkan'BS'
Contohnya foo
bisa:
BS1 1AB
bs11ab
BS111ab
String dapat terdiri dari 6 atau 7 karakter dan saya harus membuang 3 yang terakhir (dengan asumsi tidak ada spasi)
Ada tips?
''.join(foo.split())
lebih baik daripadafoo.replace(' ', '')
, ketika digunakan pada string unicode karena menghilangkan karakter spasi putih , selain' '
karakter (khususnya, ruang non-breaking juga dihapus). Yang mengatakanreplace()
mungkin jauh lebih cepat, sehingga dapat digunakan jika, katakanlah, string input diketahui dikodekan dalam ASCII, yang hanya memiliki satu karakter spasi (saya menggunakan terminologi Python 2, di sini.)Tidak berfungsi seperti yang Anda harapkan karena strip berbasis karakter. Anda perlu melakukan ini sebagai gantinya:
sumber
sumber
Anda mungkin sedikit salah paham tentang rstrip, ini tidak menghapus string tetapi karakter apa pun dalam string yang Anda tentukan.
Seperti ini:
Jadi sebagai gantinya, gunakan saja
(setelah mengganti spasi dengan apa-apa)
sumber
sumber
Saya mencoba menghindari ekspresi reguler, tetapi ini tampaknya berhasil:
string = re.sub("\s","",(string.lower()))[:-3]
sumber
Ada apa dengan ini?
sumber
split
slice
concentrate
Ini adalah latihan yang bagus untuk pemula dan mudah dicapai.
Metode lanjutan lainnya adalah fungsi seperti ini:
Dan untuk pertanyaan ini, Anda hanya ingin menghapus karakter terakhir, sehingga Anda dapat menulis seperti ini:
Saya pikir Anda sudah selesai untuk peduli tentang apa tiga karakter itu, jadi Anda kehilangan. Anda hanya ingin menghapus tiga yang terakhir, namun siapa mereka!
Jika Anda ingin menghapus beberapa karakter tertentu, Anda dapat menambahkan beberapa penilaian jika:
sumber
Tidakkah Anda melakukan operasi dengan urutan yang salah? Kebutuhan Anda tampaknya
foo[:-3].replace(" ", "").upper()
sumber
Ini tergantung pada definisi spasi putih Anda. Saya biasanya akan memanggil spasi putih sebagai spasi, tab, jeda baris dan carriage return. Jika ini adalah definisi Anda, Anda ingin menggunakan regex dengan \ s untuk mengganti semua karakter spasi putih:
sumber