繁体   English   中英

Python unicode解码编码

[英]Python unicode decoding encoding

这是我的完整代码,它与ASCII工作正常,但是当图片中出现“unicode”字符时......我讨厌我的生活......

我知道这不是英语,但让我解释一下:

我有2个输入文件(realmek,nevek)和1个结果文件(osszes)。

我在(html)有一个工作页面。

  • 就像我说的ANSI字符一样,这​​是有效的。

但是当我尝试使用奇怪的字符时:“űáéđĐ”我需要在UNICODE中保存2个输入和1个输出文件。 但是我的程序丢失了“编码解码”错误。 而且我知道这是正常的。

所以我的问题是: 我该如何解决这个问题? 我需要处理解码编码?

我想了3天......我尝试了很多解码,比如“u = unicode(s,”utf-8“)”; $ export LANG = en_US.UTF-8; 等但它没有奏效。

from urllib import urlopen
import re

faj = "hiba"
cast = "hiba"
pont = 0
szint = 0

fj = open("C:\Users\Rendszergazda\Desktop\Achievements\Realmek.txt", "r")
tombr = fj.readline()
realmek = tombr.split(" ")
fj.close()

fh = open("C:\Users\Rendszergazda\Desktop\Achievements\Nevek.txt", "r")
tomb = fh.readline()
nevek = tomb.split(" ")
fh.close()

osszes = open("C:\Users\Rendszergazda\Desktop\Achievements\Osszes.txt", "a")

for x in realmek:
    realm = x
    for y in nevek:
        nev = y
        lap = urlopen("http://eu.battle.net/wow/en/character/"+str(realm)+"/"+str(nev)+"/achievement").read()
        letezik = re.compile('<div id="server-erro(.*)">')
        letez = re.findall(letezik,lap)
        if (letez != []):   
            a = 0    
        else:

            lapn = lap.split("\n")      
            mapo = lapn[1087]
            pontos = re.compile('\t\t\t\t\t(.*)\r')
            pont = re.findall(pontos,mapo)

            mapom = lapn[1322]
            feastn = re.compile('<div class="bar-contents">\t\t\t\t\t\t\t\t\t\t\t\t(.*)\r')
            feast = re.findall(feastn,mapom)

            fajkeres = re.compile('</strong></span> <a href="/wow/en/game/race/(.*)" class="race">')
            castkeres = re.compile('</a> <a href="/wow/en/game/class/(.*)" class="class">')
            szintkeres = re.compile('<span class="level"><strong>(.*)</strong></span> <a href="/wow/en/game/')

            faj  = re.findall(fajkeres,lap)
            cast = re.findall(castkeres,lap)
            szint = re.findall(szintkeres,lap)        
            link = "http://eu.battle.net/wow/en/character/"+str(realm)+"/"+str(nev)+"/advanced"

            ccast = cast [0]
            ffaj = faj [0]
            sszint = szint [0]
            ppont = pont [0]
            ffeast = feast [0]

            osszes.write(str(nev)+" "+str(realm)+" "+str(ppont)+" "+str(ffeast)+" "+str(ffaj)+" "+str(ccast)+" "+str(sszint)+" "+str(link)+"\n")      

osszes.close()

而不是普通打开,使用codecs.open来读取和写入您的文件。 它们采用可选参数来指定要使用的编码。 确保您可以正确读取,打印和写入非ASCII文本(它将被视为脚本中的unicode), 然后检查您是否正在使用任何需要调整的正则表达式。

此外,如果您在python源代码中使用任何非ascii字符,请通过添加类似于第一行或第二行的内容来声明脚本的编码:

# -*- coding: utf-8 -*-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM