Προς το περιεχόμενο

Ερώτηση στην Python


alfas

Προτεινόμενες αναρτήσεις

Καλησπέρα σας.  Τώρα τελευταία ασχολούμαι με την Python.

Βασικά για να το θέσω σωστότερα προσπαθώ να ασχοληθώ διαβάζοντας από διάφορα site που εχουν tutorial

βήμα-βήμα (σαν παραδόσεις)και Udemy.Εντάξει αρκετά επεξηγηματικά είναι κάποια από αυτά και ψιλοβρίσκω άκρη.

Επίσης έχω βρει διάφορες ασκήσεις λυμένες και μη και κάνω εξάσκηση.

Τώρα έχω κολλήσει σε ένα σημείο αλλά δε ξέρω αν μπορώ να το επιλύσω με όσα έχω μάθει/διαβάσει ως τώρα.

Ψάχνοντας στο δίκτυο βρίσκω πως επιλύεται σε λίγες γραμμές αλλά με μεθόδους που δεν έχω δει ακόμα στην ύλη των site που ακολουθώ.

Τώρα είμαι στη φάση που μαθαίνω για τα αρχεία, αφού ξεπέρασα το αρχικό μπέρδεμα που δεν άνοιγε τα αρχεία με τίποτα όταν έχουν κωδικοποίηση.
Κάνω εγγραφή, αναζητήσεις, δημιουργίες αυτά τα απλά. Όλα καλά μέχρι που εμβάθυνα στις αναζητήσεις.

Συγκεκριμένα στην αρχή έπαιζα με ένα αρχείο που ειχα φτιάξει λίγων γραμμών και εψαχνα λέξεις κτλ δλδ αυτά που με καθοδηγούσαν τα παραδείγματα των site. Όλα καλά.

Μετά άνοιξα ένα αρχείο txt και άρχισα να μελετάω τα patterns, τα μοτίβα αναζητήσεων. Κατάλαβα τι είναι και άρχισα να πειραματίζομαι. με την function find() και εδω ολα καλά. Μέχρι που διαπίστωσα πως ναι μεν τρέχει το πρόγραμμα χωρίς λάθος άλλα δεν μου βγάζει τα σωστά αποτελέσματα. Δηλαδή, αν έχει 5 λέξεις η 5 προτασεις ασπουμε που ικανοποιει το ιδιο μοτίβο.  Πάντα φέρνει σαν αποτελεσμα (δηλαδη με print) μονάχα το πρώτο.

Κάπου εδώ χρειάζομαι νομίζω μια καθοδήγηση. Έχω διαβάσει για το read(), readline() και το readlines() και νομίζω πως έχω καταλήξει πως μόνο το find μπορεί να μου κανει αυτό που ζητάω και γίνεται χρήση μόνο με την read.  (Με βάση αυτά που έχω διαβάσει μέχρι τώρα δηλαδή).

 

Οποιαδήποτε βοήθεια ευπρόσδεκτη.

 

 

 

 





 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Τα εργαλεία σου τα δίνει η γλώσσα για να τα χρησιμοποιείς. Από τη στιγμή που βρήκες κάτι που κάνει αυτό που θες, χρησιμοποίησέ το. Αν τώρα θες βοήθεια πάνω σε συγκεκριμένο κώδικα, καλό θα ήταν να τον βάλεις για να μπορέσει κάποιος να σου απαντήσει συγκεκριμένα.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

To find επιστρεφει μονο την πρωτη εμφανιση του πατερν.

Καλυτερα χρησιμοποιησε regex γι αυτο που θελεις.

Το re.search ειναι ιδανικο για την περιπτωση σου, γιατι θα σου επιστρεψει ολες τις εμφανισεις του πατερν σου με τη θεση που βρισκονται

https://www.w3schools.com/python/python_regex.asp

Επισης δες εδω για καποιες αλλες ιδεες:

https://stackoverflow.com/questions/11122291/how-to-find-char-in-string-and-get-all-the-indexes

Επεξ/σία από archer100
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σας ευχαριστώ για τις γρήγορες απαντήσεις σας. Επανέρχομαι λοιπόν... και γίνομαι πιο συγκεκριμένος με παράδειγμα (το δανείζομαι απο τη σελίδα kite με αλλαγές για να έρθει στα μετρά της ερώτησης μου).

Έστω ότι έχω το παρακάτω κείμενο

abcacbAUG|GAC|UGAfjdalfdabcacbAUG|GBC|UGAfjdalfdabcacbAUG|GYC|UGAfjdalfdabcacbAUG|GDD|UGAfjdalfdabcacbAUG|GER|UGAfjdalfdabcacbAUG|GRR|UGAfjdalfdabcacbAUG|GRC|UGAfjdalfdabcacbAUG|GFC|UGAfjdalfdabcacbAUG|AAC|UGAfjdalfdabcacbAUG|AAC|UGAfjdalfd

Με βάση το σκεπτικό του find είχα εντοπίσει τη συνέχεια των μοτίβων και είχα ορίσει μια αρχή και ενα τέλος αλλά μου έφερνε μόνο το ενα αποτέλεσμα, το πρώτο δηλαδή που εβρισκε. Το οποίο @archer100 το εντόπισα όταν έψαχνα να δω τι λάθος έχω κάνει και δεν μου τα εμφανίζει όλα.


Επίσης αυτό με τα regular το είχα δει πως υπάρχει στο ίδιο site αλλά σε αυτά που εχω διαβάσει μεχρι τώρα δεν αναφέρεται πουθενά. Άρα λογικά θα το συναντήσω παρακάτω.
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

a="ssdfgsdfgdsfgstart1234567890finishstart24680finish sdf sstartdfgdfgfinishdfgfinishstart"
start="start"
finish="finish"
i=0
while len(a)>0:
    i=i+1
    first=a.find(start)
    end=a.find(finish,first)
    if end==-1 or first==-1:break
    print(i,a[first+len(start):end])
    a=a[end+len(finish):]

Δοκίμασε με το παραπάνω

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...