Saya butuh bantuan untuk mendeklarasikan regex. Input saya seperti berikut:
this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>.
and there are many other lines in the txt files
with<[3> such tags </[3>
Output yang dibutuhkan adalah:
this is a paragraph with in between and then there are cases ... where the number ranges from 1-100.
and there are many other lines in the txt files
with such tags
Saya sudah mencoba ini:
#!/usr/bin/python
import os, sys, re, glob
for infile in glob.glob(os.path.join(os.getcwd(), '*.txt')):
for line in reader:
line2 = line.replace('<[1> ', '')
line = line2.replace('</[1> ', '')
line2 = line.replace('<[1>', '')
line = line2.replace('</[1>', '')
print line
Saya juga sudah mencoba ini (tapi sepertinya saya menggunakan sintaks regex yang salah):
line2 = line.replace('<[*> ', '')
line = line2.replace('</[*> ', '')
line2 = line.replace('<[*>', '')
line = line2.replace('</[*>', '')
Saya tidak ingin hard-code replace
dari 1 hingga 99. . .
where the<[99> number ranges from 1-100</[100>
?<...>
tag, sehingga hasilnya haruswhere the number rangers from 1-100 ?
Jawaban:
Cuplikan yang diuji ini harus melakukannya:
Sunting: Ini versi komentar yang menjelaskan cara kerjanya:
Regex itu menyenangkan! Tetapi saya sangat merekomendasikan menghabiskan satu atau dua jam mempelajari dasar-dasar. Sebagai permulaan, Anda perlu mempelajari karakter mana yang spesial: "metacharacters" yang perlu melarikan diri (yaitu dengan backslash ditempatkan di depan - dan aturannya berbeda di dalam dan di luar kelas karakter.) Ada tutorial online yang sangat baik di: www . regular-expressions.info . Waktu yang Anda habiskan di sana akan membayar sendiri berkali-kali lipat. Selamat regexing!
sumber
str.replace()
melakukan penggantian tetap. Gunakanre.sub()
sebagai gantinya.sumber
Saya akan seperti ini (regex dijelaskan dalam komentar):
Jika Anda ingin mempelajari lebih lanjut tentang regex, saya sarankan untuk membaca Cookbook Ekspresi Reguler oleh Jan Goyvaerts dan Steven Levithan.
sumber
*
saja{0,}
{0,}
sama dengan*
,{1,}
sama dengan+
, dan{0,1}
sama dengan?
. Lebih baik digunakan*
,,+
atau?
ketika Anda bisa, hanya karena lebih pendek dan lebih mudah dibaca.Cara termudah
sumber
<[^>]+>
? Ngomong-ngomong: Saya pikir regex Anda akan cocok terlalu banyak (misalnya sesuatu seperti<html>
)ganti metode objek string tidak menerima ekspresi reguler tetapi hanya string tetap (lihat dokumentasi: http://docs.python.org/2/library/stdtypes.html#str.replace ).
Anda harus menggunakan
re
modul:sumber
\d+
sebagai gantinya[0-9]+
tidak harus menggunakan ekspresi reguler (untuk string sampel Anda)
sumber
sumber