Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: regex remove html symbols

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4559

  • panoz
  • Το Άβαταρ του/της panoz
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 4
Καλησπέρα και πάλι σε όλους,

θα ήθελα βοήθεια σχετικά με την regular expression Που χρειαζομαι να χρησιμοποιήσω
ώστε να διώξω από το παρακάτω κομμάτι όλα τα σύμβολα
ώστε να μείνει μόνο το tag description και οι λεξεις ΚΕΙΜΕΝΟ1, ΚΕΙΜΕΝΟ2, ΚΕΙΜΕΝΟ3

<description>&lt;strong&gt;Θέμα:&lt;/strong&gt; KEIMENO1 &lt;br /&gt;&lt;strong&gt; ΚΕΙΜΕΝΟ2 &lt;/strong&gt; ΚΕΙΜΕΝΟ3 /&gt;</description>

πραγματικά εχω χαθεί στα regex,

ευχαριστώ
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4560

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Θα πρέπει αρχικά να πεις(βρεις) ποιο είναι το pattern της πληροφορίας που θέλεις να αντλήσεις. Έτσι γενικά όπως το λες δεν βγαίνει άκρη. Λες θέλω να έχει μέσα το KEIMENO1. Τι διαφοροποιεί αυτό από τα υπόλοιπα (ότι είναι ελληνικά ασ πούμε ότι είναι κεφαλαία και αριθμοί ότι είναι ανάμεσα σε κενά).
Δεν ξέρω αν καταλαβαίνεις τι εννοώ.
Το να γράψεις ένα pattern να δουλεύει μόνο στο συγκεκριμένο παράδειγμα είναι απλό, δεν είναι όμως pattern.
Αν το κάνεις σαν εξάσκηση στα regex σκέψου το όπως σου λέω και φτιάξε ένα patterrn.
Αν το κάνεις ως task (θέλω να κάνω αυτό) υπάρχουν σίγουρα άλλα εργαλεία πιο κατάλληλα από regex ή μπορείς να κάνεις συνδυασμό.
Τελευταία διόρθωση: 7 Χρόνια 4 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4561

  • panoz
  • Το Άβαταρ του/της panoz
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 4
Σε ευχαριστώ για το χρόνο σου Theo, ναι το κείμενο1, κειμενο2 κλπ είναι
ελληνικοί χαρακτήρες.

αυτό που παρατηρησα στο παραδειγμα που εβαλα είναι ότι οι χαρακτηρες/σύμβολα
δεν είναι τυχαίοι και επαναλαμβάνονται, οπότε θεωρησα ότι θα μπορουσα
με μια regex να τους αφαιρεσω. Όμως νομίζω ότι κατάλαβα πως δεν κοιτάζω τι θελω να
αφαιρεσω, αλλά τι θέλω να ΠΑΡΩ από τον κώδικα.

Πάντως για το συγκεκριμένο παράδειγμα τι θα μπορούσα να κάνω ώστε να "φυγουν" οι ειδικοί χαρακτήρες?
Τελευταία διόρθωση: 7 Χρόνια 4 Μήνες πριν από panoz.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4562

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
"Όμως νομίζω ότι κατάλαβα πως δεν κοιτάζω τι θελω να αφαιρεσω, αλλά τι θέλω να ΠΑΡΩ από τον κώδικα."

Αυτό είναι σχετικό. Ότι σε εξυπηρετεί, εγώ θα έκανα το πιό εύκολο

Παντώς σε τέτοιες περιπτώσεις με τυποποιημένα κείμενα υπάρχουν έτοιμες βιβλιοθήκες να κάνεις τη δουλεία σου νομίζω beautifoul soup ή html2text

Στο συγκεκριμένο πρόβλημα τώρα
ίσως μπορείς να κάνεις
>>> import html
>>> a='<description>&lt;strong&gt;Θέμα:&lt;/strong&gt; KEIMENO1 &lt;br /&gt;&lt;strong&gt; ΚΕΙΜΕΝΟ2 &lt;/strong&gt; ΚΕΙΜΕΝΟ3 /&gt;</description>'
>>> b=html.unescape(a)
>>> b
'<description><strong>Θέμα:</strong> KEIMENO1 <br /><strong> ΚΕΙΜΕΝΟ2 </strong> ΚΕΙΜΕΝΟ3 /></description>'
Τώρα που είναι λίγο πιο ξεκάθαρο και όλα είναι tags εκτός από κάτι ξεχασμένο
μετά το κείμενο3 μπορείς να κάνεις ένα pattern για tag
>>> pat=r"<[^>]*>"
>>> re.sub(pat,'',b)
'Θέμα: KEIMENO1  ΚΕΙΜΕΝΟ2  ΚΕΙΜΕΝΟ3 />'
Βλέπει όμως ότι σου άφησε υπόλοιμα το λάθος στην html αυτό δεν μπορείς να το πιάσεις εύκολα γιατί μπορεί να είναι οτιδήποτε
Τελευταία διόρθωση: 7 Χρόνια 4 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": panoz

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4564

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": panoz

regex remove html symbols 7 Χρόνια 4 Μήνες πριν #4567

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
οι λύσεις με το regex που προτείνονται στο S.O έχουν την ίδια ουσία με αυτό που πρότεινα (αντικατάσταση των tags με τίποτα)

Tα patterns
pat1=r"<[^>]*>" 
pat2='<.*?>' 
pat3=r'<[^>]+>'
Ένα 'λάθος' που έχει το δεύτερο είναι ότι δεν έχει μπροστά το r. To r είναι απαραίτητο σχεδόν σε όλες περιπτώσεις (εδώ είναι εξαίρεση :) )
To . είναι καλό να αποφεύγεται γενικά, εδώ σώζει την κατάσταση το ?.
Θα μπορούσε κάποιος να σκεφτεί να κάνει το pattern r'<.*>' που είναι λάθος.
To pat3 είναι το ίδιο με το 1 με τη διαφορά ότι δεν κάνει match κενά tag.
Υπάρχουν σίγουρα και άλλα patterns ή θα μπορούσαν να γραφτούν.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.536 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου