簡體   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