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

ΘΕΜΑ: Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 6 Ημέρες πριν #5115

  • nickpsal
  • Το Άβαταρ του/της nickpsal
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 22
  • Ληφθείσες Ευχαριστίες 3
Καλησπέρα, θέλω να φτιάξω ένα πρόγραμμα όπου να ανοίγει ένα αρχείο κειμένου, στο αρχείο έχει ήδη κείμενο μέσα, και να μου εκτυπώνει αναλυτικά πόσους χαρακτήρες έχει ξεχωριστά το κείμενο, δηλαδή πόσα α κεφάλαια και πόσα α μικρά. Αυτό να γίνεται για όλα τα γράμματα του Αλφαβήτου μικρά και μεγάλα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 6 Ημέρες πριν #5116

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
Για python 2.7.x
from collections import defaultdict
 
characters = defaultdict(int)
filename = "path\to\text\file\here\text.txt"
with codecs.open(filename, encoding="utf-8") as text_file:
    for char in text_file.read():
        if unicode.isalnum(char):
            characters[char] += 1
for item in sorted(characters.items()):
    print "{}: {}".format(item[0], item[1])

Αν θες μόνο γράμματα βάλε το isalpha
Αν δεν είναι unicode το κείμενο, βάλε "mbcs" encoding
Για python 3 χρησιμοποίησε str αντί για unicode και βάλε παρενθέσεις στο print
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 6 Ημέρες πριν #5117

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Μία άλλη λύση μπορεί να γίνει με την Counter από τα collections
>>> from collections import Counter
>>> text = 'Καλημέρα Νίκο τι κάνεις καλά and English ara welcome'
>>> Counter((char for char in text if char.isalpha()))
Counter({'α': 3, 'κ': 3, 'a': 3, 'λ': 2, 'ι': 2, 'ά': 2, 'n': 2, 'l': 2, 'e': 2, 'Κ': 1, 'η': 1, 'μ': 1, 'έ': 1, 'ρ': 1, 'Ν': 1, 'ί': 1, 'ο': 1, 'τ': 1, 'ν': 1, 'ε': 1, 'ς': 1, 'd': 1, 'E': 1, 'g': 1, 'i': 1, 's': 1, 'h': 1, 'r': 1, 'w': 1, 'c': 1, 'o': 1, 'm': 1})
>>> 
 
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 5 Ημέρες πριν #5118

  • nickpsal
  • Το Άβαταρ του/της nickpsal
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 22
  • Ληφθείσες Ευχαριστίες 3
from collections import defaultdict

characters = defaultdict(int)
filename = "Arta.txt"
with open(filename) as text_file:
for char in text_file.read():
if str.isalnum(char):
characters[char] += 1
for item in sorted(characters.items()):
print ("{}: {}".format(item[0], item[1]))

πως θα κανω να τρεξει στην 2.7.11 ολα τα γραμματα με τον παραπσνω κωδικα?? (μου βγαζει καποια γραμματα οχι ολα)
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 5 Ημέρες πριν #5119

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
nickpsal έγραψε:
πως θα κανω να τρεξει στην 2.7.11 ολα τα γραμματα με τον παραπσνω κωδικα?? (μου βγαζει καποια γραμματα οχι ολα)
Σου βγάζει όλα τα γράμματα που υπάρχουν στο κείμενο.
Θες και αυτά που δεν υπάρχουν?

Υ.Γ. Για τον κώδικα στα post σου, να χρησιμοποιείς tags που τον κάνουν πιο ευανάγνωστο...[code] tags που τον κάνουν πιο ευανάγνωστο...
Τελευταία διόρθωση: 6 Χρόνια 5 Ημέρες πριν από embryo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 6 Χρόνια 4 Ημέρες πριν #5121

  • nickpsal
  • Το Άβαταρ του/της nickpsal
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 22
  • Ληφθείσες Ευχαριστίες 3
ΟΚ στην 3.6.5 βγαινει κανονικα, αλλα θελω να κανω κατι αλλο τωρα.
Αν μπορεις καντο αυτο που με ρωτησες.
Και θελω κατι εξτρα, να μου τα εμφανισει μονο σε μικρα ειτε ειναι κεφαλαια, ειτε με τονο, δηλαδη τα Α, τα Ά και ά να τα υπολογιζει σαν α μικρο και οχι ξεχωριστα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 5 Χρόνια 11 Μήνες πριν #5128

  • Tassos
  • Το Άβαταρ του/της Tassos
  • Αποσυνδεμένος
  • pyth__
  • g-lts.info
  • Δημοσιεύσεις: 78
  • Ληφθείσες Ευχαριστίες 5
Theo έγραψε:
Μία άλλη λύση μπορεί να γίνει με την Counter από τα collections
>>> from collections import Counter
>>> text = 'Καλημέρα Νίκο τι κάνεις καλά and English ara welcome'
>>> Counter((char for char in text if char.isalpha()))
Counter({'α': 3, 'κ': 3, 'a': 3, 'λ': 2, 'ι': 2, 'ά': 2, 'n': 2, 'l': 2, 'e': 2, 'Κ': 1, 'η': 1, 'μ': 1, 'έ': 1, 'ρ': 1, 'Ν': 1, 'ί': 1, 'ο': 1, 'τ': 1, 'ν': 1, 'ε': 1, 'ς': 1, 'd': 1, 'E': 1, 'g': 1, 'i': 1, 's': 1, 'h': 1, 'r': 1, 'w': 1, 'c': 1, 'o': 1, 'm': 1})
>>> 
 
Ωραίος φίλε, μου άρεσε ο κώδικας σου με τη χρήση των collections. ;)

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

Επίσης κατά την άποψη μου, δεν είναι και τίποτα να γράψει κάποιος κώδικα ο οποίος θα υπολογίζει αυτά που λες.
Το να θεωρείς το κάθε γράμμα πως είναι το ίδιο είτε κεφαλαίο είτε μικρό, επίσης δεν είναι δύσκολο αφού έχουν σταθερή αριθμητική απόσταση μεταξύ του.
Η μπορείς να τα μετατρέπεις όλα αρχικά σε μικρά ( με την μέθοδο lower() ) και έπειτα να κάνεις τους υπολογισμούς σου ( με τους τόνους θέλει ίσος λίγο περισσότερη σκέψη και πρώτα μια δοκιμή ).
Εντελώς φιλικά. :)
Ομάδα Ελληνικής - Μακροχρόνιας υποστήριξη.

Greek - Long Term Support Team.

Επισκεφθείτε μας εδώ : g-lts.info
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": nickpsal

Προγραμμα Αναζητησης & Εξοδου ολων των χαρακτηρων ενος Αρχειου 5 Χρόνια 11 Μήνες πριν #5129

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Ευχαριστώ Τάσο

Η πραγματικότητα είναι ότι η Standar library της python λύνει σχεδόν όλα τα τυπικά προβλημάτα που μπορεί κάποιος να συναντήσει. Επομένως αν κάποιος δεν είναι σε φάση εκμάθησης της γλώσσας δεν έχει παρά να την επισκέφτει για να μην ανακαλύπτει ξάνά τον τροχό.

Έτσι και στο πρόβλημα με τους τόνους η λύση είναι έτοιμη στην library unicodedata
>>> import unicodedata
>>> sbs="Καλημέρα τι κάνεις καλά"
>>> nfkd_form = unicodedata.normalize('NFKD', sbs)
 
>>> from collections import Counter
>>> Counter((i for i in nfkd_form if not  unicodedata.combining(i)))
Counter({'α': 5, ' ': 3, 'λ': 2, 'ε': 2, 'ι': 2, 'κ': 2, 'Κ': 1, 'η': 1, 'μ': 1, 'ρ': 1, 'τ': 1, 'ν': 1, 'ς': 1})
>>> 
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.487 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

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