Hapus elemen dalam kurung siku string dari Python

Oct 22 2020

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

2 Nick Oct 22 2020 at 11:23

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 +.