Hallo sea-live!sea-live hat geschrieben:aber das mit den Texten nur STATIC ist nicht schön
Das muss ich jetzt nicht verstehen, oder? Das Beispiel mit ``wx.StaticText`` ist ja von dir gekommen.
mfg
Gerold

Hallo sea-live!sea-live hat geschrieben:aber das mit den Texten nur STATIC ist nicht schön
Mir ging es rein darumm das es doch sinnvoll wäre in Python wenigstensgerold hat geschrieben:Hallo sea-live!sea-live hat geschrieben:aber das mit den Texten nur STATIC ist nicht schön
Das muss ich jetzt nicht verstehen, oder? Das Beispiel mit ``wx.StaticText`` ist ja von dir gekommen.
mfg
Gerold
Es ist üblich, das man in einer Sprache auch Dinge verwendet die in anderen Sprachen geschrieben sind. Oder was meinst du eigentlich?sea-live hat geschrieben:ist das bei den profies auch so das Module aus den verschiedenen Skriptsprachen kombiniert werden?
Hallo sea-live!sea-live hat geschrieben:warumm ist da nur Plain Text möglich
Code: Alles auswählen
n = n.encode(systemencoding)
File "C:\Programme\Python25\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\x84' in position 1: character maps to <undefined>
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import urllib2
import locale
workspace = os.getcwd()
systemencoding = locale.getdefaultlocale()[1]
country_names = []
country_ids = []
def get_countrynames():
url = 'http://topartists.myspace.com/index.cfm?fuseaction=music.topBands'
connected = False
try:
u = urllib2.urlopen(url)
except urllib2.URLError:
pass
else:
try:
source = u.read()
connected = True
except:
pass
else:
try:
charset = get_charset(source)
except:
charset = ''
if charset != '':
try:
source = unicode(source, charset)
except:
pass
if connected:
pos1 = source.find('</option><option value="AF">')
if pos1 > 0:
pos2 = source.find('</select></td>',pos1)
wholestring = source[pos1:pos2]
wholestring = wholestring.replace('</option><option value=','%')
wholestring = wholestring.replace('selected>','')
wholestring = wholestring.replace('</option>','')
ws = wholestring.split('%')
savefile = []
for n in ws:
country_names.append(n[5:])
country_ids.append(n[1:3])
savefile.append(n[5:]+'%'+n[1:3])
del country_names[0]
del country_ids[0]
del savefile[0]
sf = ''
for n in savefile:
sf += n+'\n'
d= open(workspace + "/countries.txt", "w")
d.write(sf.encode(systemencoding))
d.close()
def get_charset(code):
pos1 = code.find('<meta')
pos2 = code.find('charset=', pos1) + 8
pos3 = code.find('"', pos2)
charset = code[pos2:pos3]
if charset not in ['utf-8','UTF-8','iso-8859-15','ISO-8859-15','iso-8859-1','ISO-8859-1']:
charset = 'utf-8'
return charset
get_countrynames()
Nein, empfohlen ist, alles auch in Unicode zu speichern. Sonst fällst du mit eben diesem Fehler auf die Schnauze, falls ein Code nicht nach cp1252 umgewandelt werden kann.snakeseven hat geschrieben:Ich dachte, ich hätte alles so gemacht, wie mir empfohlen. Was reingeht in Unicode wandeln, was rausgeht in den Code, den das System zum Speichern verwendet.Code: Alles auswählen
n = n.encode(systemencoding) File "C:\Programme\Python25\lib\encodings\cp1252.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_table) UnicodeEncodeError: 'charmap' codec can't encode character u'\x84' in position 1: character maps to <undefined>
Du kannst Unicode nicht einfach so speichern. Dazu musst du es so oder so enkodieren. Etwa in UTF-8. Aber: UTF-8 ist nicht Unicode - dieses Mißverständnis ist eben eines der Probleme mit Unicode.mkallas hat geschrieben:Nein, empfohlen ist, alles auch in Unicode zu speichern.
So habe ich es auch nicht gesagt.Leonidas hat geschrieben:UTF-8 ist nicht Unicode - dieses Mißverständnis ist eben eines der Probleme mit Unicode.
Wikipedia hat geschrieben:UTF-8 (Abk. für 8-bit Unicode Transformation Format) ist die am weitesten verbreitete Kodierung für Unicode-Zeichen.
Code: Alles auswählen
d.write(sf) #.encode(systemencoding))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-16: ordinal not in range(128)
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import wx
import os
import urllib2
import locale
workspace = os.getcwd()
systemencoding = locale.getdefaultlocale()[1]
country_names = []
country_ids = []
def get_countrynames():
url = 'http://topartists.myspace.com/index.cfm?fuseaction=music.topBands'
connected = False
try:
u = urllib2.urlopen(url)
except urllib2.URLError:
pass
else:
try:
source = u.read()
connected = True
except:
pass
else:
try:
charset = get_charset(source)
except:
charset = ''
if charset != '':
try:
source = unicode(source, charset)
print type(source)
except:
pass
if connected:
pos1 = source.find('</option><option value="AF">')
if pos1 > 0:
pos2 = source.find('</select></td>',pos1)
wholestring = source[pos1:pos2]
wholestring = wholestring.replace('</option><option value=','%')
wholestring = wholestring.replace('selected>','')
wholestring = wholestring.replace('</option>','')
ws = wholestring.split('%')
savefile = []
for n in ws:
country_names.append(n[5:])
country_ids.append(n[1:3])
savefile.append(n[5:]+'%'+n[1:3])
del country_names[0]
del country_ids[0]
del savefile[0]
#sf = ''
#for n in savefile:
#sf += n+'\n'
#d= open(workspace + "/countries.txt", "w")
#d.write(sf.encode(systemencoding))
#d.close()
Ausgabe()
def get_charset(code):
pos1 = code.find('<meta')
pos2 = code.find('charset=', pos1) + 8
pos3 = code.find('"', pos2)
charset = code[pos2:pos3]
if charset not in ['utf-8','UTF-8','iso-8859-15','ISO-8859-15','iso-8859-1','ISO-8859-1']:
charset = 'utf-8'
return charset
class Ausgabe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, '', size=(250, 325))
panel = wx.Panel(self, -1)
self.lbcountry = wx.ListBox(panel, -1, (19, 19), (204, 173), country_names, wx.LB_MULTIPLE)
self.Show()
self.Center()
class MyApp(wx.App):
def OnInit(self):
get_countrynames()
return True
app = MyApp(0)
app.MainLoop()
Code: Alles auswählen
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />