Saya ingin menghapus tanda kutip ganda dari:
string = '"" " " ""\\1" " "" ""'
untuk memperoleh:
string = '" " " ""\\1" " "" "'
Saya mencoba menggunakan rstrip
, lstrip
dan strip('[^\"]|[\"$]')
tapi itu tidak bekerja.
Bagaimana saya bisa melakukan ini?
strip
, harap perhatikan bahwa a) metode ini tidak menggunakan regex sebagai argumennya, b) regex yang Anda berikan tidak akan berfungsi dan c) metode ini menghapus semua karakter yang berdekatan, bukan hanya satu, jadi Anda akan kehilangan dua tanda kutip ganda dengan.strip('"')
.Jawaban:
Jika tanda kutip yang ingin Anda hapus selalu menjadi "pertama dan terakhir" seperti yang Anda katakan, Anda dapat menggunakan:
string = string[1:-1]
sumber
Jika Anda tidak dapat berasumsi bahwa semua string yang Anda proses memiliki tanda kutip ganda, Anda dapat menggunakan sesuatu seperti ini:
Edit:
Saya yakin Anda baru saja menggunakan
string
nama variabel untuk contoh di sini dan dalam kode asli Anda memiliki nama yang berguna, tetapi saya merasa berkewajiban untuk memperingatkan Anda bahwa ada modul yang diberi namastring
di pustaka standar. Ini tidak dimuat secara otomatis, tetapi jika Anda pernah menggunakannya,import string
pastikan variabel Anda tidak melebihi itu.sumber
Untuk menghapus karakter pertama dan terakhir, dan dalam setiap kasus lakukan penghapusan hanya jika karakter yang dimaksud adalah tanda kutip ganda:
Perhatikan bahwa pola RE berbeda dari yang Anda berikan, dan operasinya adalah
sub
("substitusi") dengan string pengganti kosong (strip
adalah metode string tetapi melakukan sesuatu yang sangat berbeda dari persyaratan Anda, seperti yang ditunjukkan oleh jawaban lain).sumber
startsWith
.PENTING: Saya memperluas pertanyaan / jawaban untuk menghapus tanda kutip tunggal atau ganda. Dan saya mengartikan pertanyaan itu berarti bahwa KEDUA tanda kutip harus ada, dan cocok, untuk melakukan strip. Jika tidak, string dikembalikan tanpa perubahan.
Untuk "membatalkan" representasi string, yang mungkin memiliki tanda kutip tunggal atau ganda di sekitarnya (ini adalah perpanjangan dari jawaban @ tgray):
Penjelasan:
startswith
dapat menggunakan tupel, untuk mencocokkan salah satu dari beberapa alternatif. Alasan untuk tanda kurung GANDA((
dan))
adalah agar kita meneruskan SATU parameter("'", '"')
kestartswith()
, untuk menentukan prefiks yang diizinkan, bukan DUA parameter"'"
dan'"'
, yang akan ditafsirkan sebagai awalan dan posisi awal (tidak valid).s[-1]
adalah karakter terakhir dalam string.Pengujian:
=>
(Bagi saya, ekspresi regex tidak jelas untuk dibaca, jadi saya tidak mencoba memperpanjang jawaban @ Alex.)
sumber
len(s) >= 2
,, atau yang serupa.Jika string selalu seperti yang Anda tunjukkan:
sumber
Hampir selesai. Mengutip dari http://docs.python.org/library/stdtypes.html?highlight=strip#str.strip
[...]
Jadi argumennya bukan regexp.
Perhatikan, bahwa ini bukan yang Anda minta, karena ia memakan banyak kutipan dari kedua ujung string!
sumber
Jika Anda yakin ada "di awal dan di akhir, yang ingin Anda hapus, lakukan saja:
atau
sumber
Hapus string yang ditentukan dari awal dan akhir dari string.
sumber
Saya memiliki beberapa kode yang perlu menghapus tanda kutip tunggal atau ganda, dan saya tidak bisa hanya ast.literal_eval itu.
Ini mirip dengan jawaban ToolmakerSteve, tetapi memungkinkan 0 string panjang, dan tidak mengubah karakter tunggal
"
menjadi string kosong.sumber
dalam contoh Anda, Anda dapat menggunakan strip tetapi Anda harus menyediakan ruang
perhatikan \ 'dalam output adalah tanda kutip python standar untuk output string
nilai variabel Anda adalah '\\ 1'
sumber
Fungsi di bawah ini akan menghapus spasi kosong dan mengembalikan string tanpa tanda kutip. Jika tidak ada tanda kutip maka akan mengembalikan string yang sama (dilucuti)
sumber
Mulai
Python 3.9
, Anda dapat menggunakanremoveprefix
danremovesuffix
:sumber
temukan posisi "pertama dan terakhir" dalam string Anda
sumber