/ / Python 3 jak konwersja ciągów w pythonie 2 - łańcuch znaków, python-3.x, python-2.x, znaki nie-ascii

Python 3 jak konwersja ciągów w pythonie 2 - łańcuch znaków, python-3.x, python-2.x, znaki nie-ascii

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 № 1

Wyglą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.