Przesyłam mój kod do Pythona 3 z zachowaniem kompatybilności wstecznej.
The str
funkcja w python 2 i python 3 konwertuje łańcuchy znaków inaczej niż ASCII. Na przykład:
Python 2:
In [4]: str("Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve")
Out[4]: "Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Lxc3xb6ve & D. Lxc3xb6ve"
Ale w Pythonie 3:
In [1]: str("Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve")
Out[1]: "Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve"
Python 3 Jak mogę uzyskać taką samą reprezentację w Pythonie 2? Piszę ciągi do tabeli sqlite3.
Odpowiedzi:
1 dla odpowiedzi № 1Wygląda na to, że chcesz literał literowy Unicode. W Pythonie 3 wszystkie normalne literały łańcuchowe są literałami w standardzie Unicode. Tylko w Pythonie 2 unicode
wartości to ciągi znaków Unicode. Tworzenie literału ciągu unicode w Pythonie 2 odbywa się poprzez wstawienie znaku u
przed literałem:
u"Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve"
Jest to ta sama reprezentacja, co Twój ciąg znaków w języku Python 3. Zauważ, że jeśli twój plik źródłowy jest w kodowaniu utf-8, musisz dodać specjalny komentarz, aby to zaznaczyć, w pierwszej lub drugiej linii, na przykład:
# -*- coding: utf-8 -*-
Aby uzyskać więcej informacji na ten temat, zobacz PEP 263 lub to inne pytanie.