Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 02 Νοέμ 2011, 16:45

Υπάρχει τρόπος να αλληλεπιδράσω με κάποιο site μέσω της python;
Δεν εννοώ να πάρω απλά πληροφορίες για το site. Ας πούμε στη σελίδα http://convertpdftoword.net/ μόλις πατήσεις αναζήτηση ανοίγει ένας διάλογος για να επιλέξεις αρχείο και αντίστοιχα όταν πατήσεις το download επιλέγεις που θα αποθηκευτεί. Έστω ότι ξέρω τις δύο αυτές πληροφορίες από πριν. Μπορώ να τις περάσω μέσω της python στη σελίδα ώστε να εκτελεστεί η εργασία;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 03 Νοέμ 2011, 12:55

Γενικά με web δεν έχω ασχοληθεί, αλλά ρίξε ένα μάτι στο mechanize. Μπορεί να κάνει αυτό που θες
http://wwwsearch.sourceforge.net/mechanize/
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 06 Νοέμ 2011, 22:49

@pmav99
Μιας και έχεις ασχοληθεί με GUI εφαρμογές σε pyqt έχεις ιδέα πως μετατρέπουμε QStrings σε κανονικά strings με utf-8 encoding σε python2;
Αν πάρω ένα QString με ελληνικά και το και πάω να το εκτυπώσω παίρνω σφάλμα:
Κώδικας: Επιλογή όλων
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)

Όταν θέλω να περάσω ελληνικά strings σε ετικέτες κλπ χρησιμοποιώ:
Κώδικας: Επιλογή όλων
QApplication.translate(class_name, string, None, QApplication.UnicodeUTF8)

Όμως δεν μπορώ να κάνω το ίδιο στην προκειμένη. Εννοείται ότι και οι συναρτήσεις str() και unicode() δεν δουλεύουν επίσης.
Έψαξα αρκετά αλλά ακόμα δεν κατάφερα να το λύσω... :( Έτυχε να το αντιμετωπίσεις; Καμιά ιδέα;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 06 Νοέμ 2011, 23:00

Μπορείς να ανεβάζεις ένα minimum working example?

Δοκίμασε και με
Κώδικας: Επιλογή όλων
from __future__ import unicode_literals


Δες και αυτά :
http://harishankar.org/blog/entry.php/p ... ing-gotcha
http://www.riverbankcomputing.co.uk/sta ... tchas.html
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 06 Νοέμ 2011, 23:04

pmav99 έγραψε:Μπορείς να ανεβάζεις ένα minimum working example?

Δοκίμασε και με
Κώδικας: Επιλογή όλων
from __future__ import unicode_literals


Κώδικας: Επιλογή όλων
>>> from PyQt4.QtCore import *
>>> a = QString('ελληνικά')
>>> a
PyQt4.QtCore.QString(u'\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac')
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)
>>> unicode(a)
u'\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac'
>>> str(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)

Το unicode_literals πως θα το χρησιμοποιήσω;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 06 Νοέμ 2011, 23:20

Κώδικας: Επιλογή όλων
Python 2.7.2 (default, Jun 29 2011, 11:10:00)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import unicode_literals
>>> from PyQt4.QtCore import QString
>>> a = QString("ελληνικά")
>>> print a.toUtf8()
ελληνικά
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 06 Νοέμ 2011, 23:23

pmav99 έγραψε:
Κώδικας: Επιλογή όλων
Python 2.7.2 (default, Jun 29 2011, 11:10:00)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import unicode_literals
>>> from PyQt4.QtCore import QString
>>> a = QString("ελληνικά")
>>> print a.toUtf8()
ελληνικά

:bow:
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 07 Νοέμ 2011, 20:31

Πρόβλημα κι αυτό με τα encodings στην python2! Δύο μέρες μου πήρε να πετύχω αυτό που θέλω... :P

Θέλοντας να χρησιμοποιήσω ένα QString από το πρόγραμμα έπρεπε:
1)Να κάνω import τα unicode_literals:
Κώδικας: Επιλογή όλων
from __future__ import unicode_literals

2)Να μετατρέπω το κείμενο σε unicode για να το επεξεργαστώ (πχ. να προσθέσω κι άλλο κείμενο στην συμβολοσειρά):
Κώδικας: Επιλογή όλων
text = QString('ένα string')
text = unicode(text)

3)Αφού τελειώσω την επεξεργασία θέλοντας να το χρησιμοποιήσω μέσα σε μία subprocess.call() έπρεπε να γίνει str γιατί η συνάρτηση όπως και η os.system() δεν διαβάζει unicode. Όμως από unicode δεν μετατρέπεται κατευθείαν σε str. Οπότε από unicode πίσω πάλι σε QString...
Κώδικας: Επιλογή όλων
text = QString(text)

4)...μετά σε QByteArray...
Κώδικας: Επιλογή όλων
text = text.toUtf8()

5)...και τέλος σε str με utf-8 encoding.
Κώδικας: Επιλογή όλων
text = str(text)

Δεν γίνετε να παραλείψω κανένα απ' τα παραπάνω στάδια καθώς δεν μπορώ να επεξεργαστώ συμβολοσειρά σε str, αλλά μόνο σε unicode ενώ αντίθετα δεν μπορώ να χρησιμοποιήσω unicode μέσα σε συναρτήσεις όπως η call(). Ουφ! :wtf:

Πάλι καλά που στην python3 έχουν διορθωθεί όλα αυτά! :)
Τελευταία επεξεργασία από Ilias95 και 07 Νοέμ 2011, 23:24, έχει επεξεργασθεί 2 φορά/ες συνολικά
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό pmav99 » 07 Νοέμ 2011, 22:50

Γιατί τόση καούρα με τα QString? Τι widget χρησιμοποιείς που δουλεύει μόνο μαζί τους και όχι με απλά unicode strings?

edit
Αν βάλες το 1, το 2 νομίζω ότι δεν χρειάζεται (αν και δε μας λες τι type είναι το text...) Όλα τα strings είναι αυτομάτως unicode μετά το 1.
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Ilias95 » 07 Νοέμ 2011, 23:16

pmav99 έγραψε:Γιατί τόση καούρα με τα QString? Τι widget χρησιμοποιείς που δουλεύει μόνο μαζί τους και όχι με απλά unicode strings?

edit
Αν βάλες το 1, το 2 νομίζω ότι δεν χρειάζεται (αν και δε μας λες τι type είναι το text...) Όλα τα strings είναι αυτομάτως unicode μετά το 1.

Μέσα στο πρόγραμμα μου χρησιμοποιώ QFileDialog.getOpenFileName() για να πάρω μέσα απ' τον διάλογο το όνομα του αρχείου. Ο διάλογος επιστρέφει QString.

Ναι ξέχασα να βάλω type, το διόρθωσα. Είναι το Qstring που επέστρεψε ο διάλογος και το μετατρέπω σε unicode.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι