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

ΘΕΜΑ: PYTHON και ελληνικοι χαρακτηρες

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4309

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
καλησπέρα

έχω κάνει ένα python πρόγραμμα που διαβάζει κάτι αρχεία δίνοντας το ανάλογο path του εκάστοτε αρχείου και κάνει μια ανάλυση τέλος παντων. Οταν αυτό το path είναι στα αγγλικά τότε το πρόγραμμα λειτουργεί μια χαρά,αλλά αν αυτό το path περιεχέι ελληνικούς χαρακτήρες ή καποιο κενό τότε μου εμφανίζει αιτώ το μήνυμα σφάλματος : Non-ASCII character.
μπορώ με κάποιον τρόπο να κάνω την python 2.7 να διαβάζει ελληνικούς χαρακτήρες ή να το ξεχάσω ?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4310

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Ναι γίνεται, αλλά γιαι δεν χρησιμοποιείς python 3;
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4312

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
γιατί αυτό που κάνω πρέπει να είναι σε python 2.7,χρησιμοποιώ των python editor ενός προγράμματος που έχει δικιά του python 2.7 γιαυτό δεν μπορώ να το κάνω σε python 3. λοιπόν σε 2.7 γίνεται ?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4313

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
xristosss20 έγραψε:
μπορώ με κάποιον τρόπο να κάνω την python 2.7 να διαβάζει ελληνικούς χαρακτήρες ή να το ξεχάσω ?
Φυσικά και μπορείς, αλλά θα βόλευε να μας δώσεις κάποιο παράδειγμα που δεν δουλεύει, για να δούμε τι γίνεται λάθος...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4314

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
είναι πολύ απλό πχ:

var1="C:\Users\username\Desktop\Νέος φάκελος\φάκελος\myfile" σε αυτό για παράδειγμα μου εμφανίζει το σφάλμα αν ήταν στα αγγλικά το path θα δούλευε κανονικά.
προφανώς πρέπει να γίνει κάποια κωδικοποίηση σε ISO-8859-7 ή UTF-8 ? αλλά με τα κενά τι θα γίνει ?
Τελευταία διόρθωση: 7 Χρόνια 1 Μήνας πριν από xristosss20.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4315

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Δεν είναι επιτακτικό να ξεχάσεις τα Ελληνικά αλλά καλό θα ήταν.
Να προτιμάς Λατινικούς χαρακτήρες στα path και file names γιατί δημιουργούνται αρκετά προβλήματα, όπως και με τα κενά.

Αν εππιμένεις, μπορείς να κάνεις convert απο ένα code page σε άλλο με decode και encode.
Θα πρέπει βέβαια να βρεςις την code page του υπλογιστή.
Στα Windows πειραματίσου με cp1253, latin1 και iso-8859-7.
Σε Linux είναι πολύ πιθανό να είναι utf-8.

Επίσης, τα slashes συνήθως θέλουν και escape slash.
Τελευταία διόρθωση: 7 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4316

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
xristosss20 έγραψε:
είναι πολύ απλό πχ:
var1="C:\Users\username\Desktop\Νέος φάκελος\φάκελος\myfile" σε αυτό για παράδειγμα μου εμφανίζει το σφάλμα αν ήταν στα αγγλικά το path θα δούλευε κανονικά.
προφανώς πρέπει να γίνει κάποια κωδικοποίηση σε ISO-8859-7 ή UTF-8 ? αλλά με τα κενά τι θα γίνει ?
Πρώτα απ' όλα πρέπει να ορίσεις την κωδικοποίηση του script σε UTF-8 γράφοντας στην πρώτη γραμμή: # coding=utf-8
Μετά, καλό θα ήταν να χρησιμοποιείς unicode π.χ. u"C:\Users\username\Desktop\Νέος φάκελος\φάκελος\myfile"
Ένας βολικός τρόπος για να μην χρειάζεται να το ορίζεις κάθε φορά, είναι να βάλεις την βιβλιοθήκη __future__
Αν λοιπόν κάνεις
from __future__ import unicode_literals
κάθε κείμενο που γράφεις θα είναι unicode, εκτός αν το ορίσεις σαν str("bla-bla") οπότε θα είναι απλό string.
Βέβαια και χωρίς unicode δεν θα έχεις πια το λάθος που είχες, αλλά διαχειρίζεσαι πολύ καλύτερα τα κείμενα έτσι.

Τα κενά δεν έχουν κάποιο πρόβλημα εδώ.
Τι σου παρουσιάζουν?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4317

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
@embryo θα δοκιμάσω αυτό που μου λες να δω αν συνεχίσω να έχω το ίδιο σφάλμα ευχαριστώ,αν βάλω το from __future__ import unicode_literals δεν θα χρειάζομαι # coding=utf-8(με δίεση το βάζω ?) ούτε το "u"μπροστά από το path ?
@Αποστόλης μαζί σου και εγώ αναγκαίο το κακό,αλλά δουλεύω σε μια ήδη υφιστάμενη κατάσταση δεν είναι κάτι που το ξεκίνησα εγώ.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4318

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Και ναι το encoding χρειάζεται να το δηλώνεις πάντα στην python 2.

Nα ξεκινάς πάντα τα modules με κάτι σαν το ακόλουθο:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# module:
# author:
 
"""
 
"""
 
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

Το unicode_literals έχει side effects και προσωπικά το αποφεύγω.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4319

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
xristosss20 έγραψε:
@embryo θα δοκιμάσω αυτό που μου λες να δω αν συνεχίσω να έχω το ίδιο σφάλμα ευχαριστώ,αν βάλω το from __future__ import unicode_literals δεν θα χρειάζομαι # coding=utf-8(με δίεση το βάζω ?) ούτε το "u"μπροστά από το path ?
Το # coding=utf-8 είναι πάντα αναγκαίο, και για τα windows είναι το μόνο που χρειάζεται.
Για unix χρειάζεσαι και το path για το binary της python.

Η __future__ είναι μια προσπάθεια "backporting" βελτιώσεων της python 3.x στη 2.x
Τα 3 βασικότερα που χρησιμοποιώ πάντα είναι τα:
division > κάνει σωστά τις διαιρέσεις και γυρίζει και float όταν χρειάζεται
print_function > το print είναι function και χρειάζεται πάντα παρενθέσεις
unicode_literals > τα strings είναι default unicode
Το unicode_literals έχει side effects και προσωπικά το αποφεύγω.
Τι εννοείς side effects?
Τα χρησιμοποιώ συνέχεια εδώ και χρόνια και δεν έχω προσέξει κάτι.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4320

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
@pmav99 δλδ τι εννοείς ?

όποτε ξεκινάω
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import
# coding=utf-8
myvar=u"C:\Users\username\Desktop\Νέος φάκελος\φάκελος\myfile"

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

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4321

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
@χρήστος
Όχι δεν ξεκινάς με αυτό. ξεκινάς με αυτό ακριβώς που σου έγραψα στο προηγούμενο post.

@embryo
Με το unicode literals, αν μία συνάρτηση περιμένει string και εσύ της περνάς unicode που έχει διαφορετικό type παίρνεις exception. Για αυτό και δεν μπορείς να το βάζεις σε κώδικα 3ων γιατί μπορεί να σπάσεις κάτι καταλάθος. Σε δικό σου κώδικα, ΟΚ, αλλά πρέπει να το έχεις πάντα υπόψη σου.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4322

  • embryo
  • Το Άβαταρ του/της embryo
  • Αποσυνδεμένος
  • pyth__
  • Δημοσιεύσεις: 92
  • Ληφθείσες Ευχαριστίες 31
pmav99 έγραψε:
Με το unicode literals, αν μία συνάρτηση περιμένει string και εσύ της περνάς unicode που έχει διαφορετικό type παίρνεις exception. Για αυτό και δεν μπορείς να το βάζεις σε κώδικα 3ων γιατί μπορεί να σπάσεις κάτι καταλάθος. Σε δικό σου κώδικα, ΟΚ, αλλά πρέπει να το έχεις πάντα υπόψη σου.
Δηλαδή αν μία συνάρτηση περιμένει string και εσύ της στείλεις str("blabla") θα έχει πρόβλημα?
Αν δεν έχει, τότε, όταν δεν ξέρεις τι περιμένει ο άλλος, στέλνεις string.
Εδώ περιγράφει κάποια προβλήματα, αλλά κανένα από αυτά δεν με αφορά ιδιαιτέρως...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4323

  • xristosss20
  • Το Άβαταρ του/της xristosss20
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 53
@pmav99 πρώτο δείγμα θετικό φαίνεται να δουλεύει έτσι ακριβώς όπως μου είπες..
είχα μια αστοχία αλλά δεν είμαι σίγουρος γιατί δεν το διερεύνησα πολύ ακόμα.
απλώς στην αστοχία χρησιμοποιησα σε public path όχι τοπικό αυτό έχει καμία διάφορα-ιδιαιτεροτητα από το
τοπικό ?εννοώ στην σύνταξη στην python πρέπει να λάβω υπόψιν μου κάτι ακόμα?για να δω αν ωφελείται εκεί το σφάλμα
Τελευταία διόρθωση: 7 Χρόνια 1 Μήνας πριν από xristosss20.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

PYTHON και ελληνικοι χαρακτηρες 7 Χρόνια 1 Μήνας πριν #4326

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Επιπλέον για τα κενά πρέπει ολόκληρο το path να έχει αυτάκια.

πχ
path = "\"C:\\Users\\Zervos\\Desktop\\Σχολή\\Εργασία 1.pdf\""

Αν το κάνεις print θα πρέπει να βλέπεις:
"C:\Users\Zervos\Desktop\Σχολή\Εργασία 1.pdf"
Τελευταία διόρθωση: 7 Χρόνια 1 Μήνας πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": xristosss20
  • Σελίδα:
  • 1
  • 2
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.439 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

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