Hapus elemen dalam kurung siku string dari Python
Saya diminta untuk menghapus elemen dalam kurung siku dari sebuah string. Namun, saya tidak bisa mendapatkan hasil yang diinginkan.
Di bawah ini adalah keluaran yang diinginkan yang harus saya dapatkan:
Contoh Output
[[apel] .png -> [.png
[apel]]. png ->] .png
[[apel]]. png -> [] .png
[an] apel [adaykeeps]] [[dokter] pergi.png -> apel] [jauh.png
Di bawah ini adalah metode yang saya gunakan tetapi tidak bisa mendapatkan keluaran yang diperlukan:
Metode Regex
file = re.sub (r '(\ d * \ D + \ d *) \ s +', '', re.sub (r '{. +? # (\ d +). \ d +)}', r '( \ 1) ', berkas));
Metode SubString
openbracket = file.find ('['); closebracket = file.find (']');
if len (file)> closebracket: file = file [0: openbracket:] + file [closebracket + 1 ::]
Jawaban
Anda dapat melakukan ini dengan regex; ekspresi reguler Anda harus cocok dengan [diikuti dengan sejumlah karakter bukan [atau ]hingga a ], dan ganti string itu dengan tidak ada:
import re
strings = ['[[apple].png', '[apple]].png', '[[apple]].png', '[an]apple[adaykeeps]]the[[doctor]away.png']
for s in strings:
name = re.sub(r'\[[^][]*\]', '', s)
print(name)
Keluaran:
[.png
].png
[].png
apple]the[away.png
Kode ini akan diganti []dengan string kosong ''; jika ini bukan perilaku yang diinginkan, ubah *dalam regex menjadi a +.