2014-06-24 13 views
5
string = "Deepika Padukone, Esha Gupta or Yami Gautam - Who's looks hotter and sexier? Vote! - It's ... Deepika Padukone, Esha Gupta or Yami Gautam…. Deepika Padukone, Esha Gupta or Yami Gautam ... Tag: Deepika Padukone, Esha Gupta, Kalki Koechlin, Rang De Basanti, Soha Ali Khan, Yami ... Amitabh Bachchan and Deepika Padukone to be seen in Shoojit Sircar's Piku ..." 

fp = open("test.txt", "w+"); 

fp.write("%s" %string); 

po uruchomieniu powyższego kodu Mam następujący błąd.Jak pozbyć się błędu kodowania ASCII w pythonie

File "encode_error.py", line 1 

SyntaxError: Non-ASCII character '\xe2' in file encode_error.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 
+2

Czy * przeczytałeś podany link *? –

+0

Działa dobrze dla mnie ... – hd1

+0

@ hd1: Naprawdę? W pliku źródłowym uruchomić w Pythonie 2? * Nie wklejaj tego do interaktywnej sesji Pythona *. –

Odpowiedz

6

Masz U+2026 HORIZONTAL ELLIPSIS postać w swojej definicji wyrażenie:

... Deepika Padukone, Esha Gupta or Yami Gautam…. ... 
              ^

Python wymaga zadeklarować kodowanie kodu źródłowego, jeśli są do korzystania ze znaków spoza ASCII w źródle.

Twoje opcje to:

  • deklarować kodowanie, jak specified in the linked PEP 263. To jest komentarz, który musi być pierwszą lub drugą linią pliku źródłowego.

    To, co ustawisz na , zależy od edytora kodu. Jeśli zapisujesz pliki zakodowane jako UTF-8, a następnie komentarz wyglądał:

    # coding: utf-8 
    

    ale format jest elastyczny. Możesz na przykład przeliterować to encoding i użyć = zamiast :.

  • wymienić poziomą elipsę z trzech punktów, stosowane w dalszej części łańcucha

  • Wymienić kodowy z \xhh reprezentować sekwencje zakodowanych danych. Kod U + 2026 kodowany do UTF-8 to \xe2\x80\xa6.
+0

jak wykonać kodowanie kodu źródłowego w moim źródle.Jestem początkującym do python – user3770743

+1

THE napisany powyżej został zaczerpnięty z obiektu JSON i muszę wyodrębnić ciąg. A więc może nie być możliwe zastąpienie wielokropka trzema kropkami. – user3770743

+0

@ user3770743: Dlaczego więc nie załadować danych JSON z pliku lub odpowiedzi HTTP za pomocą modułu 'json'? –

5

dodać # coding: utf-8 do początku pliku.

# coding: utf-8 
string = "Deepika Padukone, Esha Gupta or Yami Gautam - Who's looks hotter and sexier? Vote! - It's ... Deepika Padukone, Esha Gupta or Yami Gautam…. Deepika Padukone$ 

fp = open("test.txt", "w+"); 

fp.write("%s" %string); 

Objaśnienie:

Błąd jest spowodowany przez zastąpienie standardowych znaków jak apostrof („) o nietypowych znaków jak cudzysłów (`) podczas kopiowania. Zdarza się to dość często, gdy kopiujesz tekst z pliku PDF. Różnica jest bardzo subtelna, ale w przypadku Pythona istnieje ogromna różnica. Apostrof jest całkowicie legalny, aby wskazać ciąg tekstowy, ale cudzysłów nie jest.

Z technicznego punktu widzenia nie jest nielegalne używanie jakichkolwiek znaków, które chcemy. Trzeba tylko powiedzieć Pythonowi, jakiego rodzaju kodowania używamy, aby wiedział, co zrobić z tymi niestandardowymi znakami. Dodanie # coding: utf-8 na górze tego pliku powie Pythonie, że twoje kodowanie jest utf-8.

UTF-8 to format służący do kodowania znaków w zestawie znaków Unicode. Jest używany bardzo szeroko w Internecie. Unicode to branżowy standard do reprezentowania i obsługi tekstu na wielu różnych platformach, w tym w Internecie, oprogramowaniu korporacyjnym, drukowaniu itp. UTF-8 jest jednym z bardziej popularnych sposobów kodowania tego zestawu znaków.

+1

Tylko jeśli edytor tekstowy OP jest ustawiony na UTF-8. –

+0

Oczywiście, * ale trzeba to wyraźnie powiedzieć *. Możesz również tworzyć poziome elipsy w innych kodowaniach. –

+1

tak, działa dobrze, jeśli to zrobię. – user3770743

Powiązane problemy