Bir html web sitesi okudum ve bir ad listesi aldığımı varsayalım: 'Amiel, Henri-Frédéric'. Aşağıdaki kodu kullanarak html kodunu çözmek adlarının listesini almak içinPython'da csv'den kodlanmış dizelerin veri çerçevesi nasıl okunur?
:
[u'Abatantuono: Bu noktada
f = urllib.urlopen("http://xxx.htm")
html = f.read()
html=html.decode('utf8')
t.feed(html)
t.close()
lista=t.data
, değişken lista gibi isimlerin bir listesini içerir Diego ' ... u'Amiel Henri-Frederic']
Şimdi istiyorum:
- bu adları bir DataFrame içine yerleştirin;
- DataFrame'i bir csv dosyasında saklayın; At
name=u'Amiel, Henri-Fr\xe9d\xe9ric' name=name.encode('utf8') array=[name] df=pd.DataFrame({'Names':array}) df.to_csv('names') uni=pd.read_csv('names') uni #trying to read the csv file in a DataFrame
:
- bir DataFrame aracılığıyla Python csv okundu Kolaylık olması açısından
, ı şu kodu kullanırsınız 1'den 3'e kadar adımları tamamlamak için göz önünde bulundurularak hemen üstünde adını alalım Bu noktada ben aşağıdaki hatayı alıyorum:
:UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 67: invalid continuation byte
birlikte yukarıdaki kod son satırı yerine ise
print uni
DataFrame'i okuyabiliyorum, ancak bu sorunu çözmenin doğru yolu olduğunu düşünmüyorum.
Bu argümanla ilgili olarak diğer kullanıcılar tarafından gönderilen birçok soruyu reddediyorum, ancak bunu çözemedim. Her iki to_csv
yöntemi ve read_csv
işlevinin her ikisi de encoding
argümanını alır.
Maalesef kod çalışır ancak kodunun son satırı olarak 'baskı uni' kullanmak durumunda. Eğer 'uni' kullanmayı denerseniz, hatayı alırsınız: "UnicodeDecodeError: 'utf8' codec'i, 67: baytında 0xe9 kodunu çözemez: geçersiz devam eden bayt" –
@ fabrizio_ff - ne "pandalar"/"numpy" sürümü kullanıyorsun – root
@ root-- numpy: 1.6.2 // pandalar: 0.9.1. Son kodunuzu kullanmaya çalıştım ama eğer 'uni' yazarsam aynı hatayı alırım (bunun yerine 'print uni' ile çalışır). –