Відповіді:
Ви маєте рацію, див. 3.1.3. Unicode рядки .
Це був синтаксис з Python 2.0.
Python 3 зробив їх надмірними, оскільки типом рядка за замовчуванням є Unicode. Версії 3.0 до 3.2 видалили їх, але вони були знову додані в 3.3+ для сумісності з Python 2, щоб допомогти переходу 2 на 3.
ur"string") є дійсним у Python 2, але, на жаль, недійсний синтаксис у Python 3.
U u'Some String'означає, що ваша рядок є рядком Unicode .
З: Я дуже страшно поспішаю, і я приземлився тут із Пошуку Google. Я намагаюся записати ці дані у файл, я отримую помилку, і мені потрібні мертві найпростіші, напевно, помилкові рішення цієї секунди.
Відповідь: Ви дійсно повинні читати абсолютний мінімум Джоеля, кожен розробник програмного забезпечення абсолютно, позитивно повинен знати про Unicode та набори символів (без виправдань!) Есе про набори символів.
Питання: sry no time code pls
Добре. спробуйте str('Some String')або 'Some String'.encode('ascii', 'ignore'). Але ви дійсно повинні прочитати деякі відповіді та обговорення щодо перетворення рядка Unicode і цей відмінний, відмінний буквар на кодування символів.
Я здогадуюсь, що він позначає "Unicode", чи правильно?
Так.
Якщо так, то коли він доступний?
Python 2.x.
У Python 3.x рядки використовують Unicode за замовчуванням і немає необхідності в uпрефіксі. Примітка: у Python 3.0-3.2 u - помилка синтаксису. У Python 3.3+ знову законно, щоб було простіше писати 2/3 сумісні програми.
uпрефікса.
six.text_type()скрізь користуватися для (сподіваюся, мізерної) кількості людей, які все ще використовують 3. [012] - принаймні інформація є, щоб ви могли вибрати.
Я приїхав сюди, тому що у мене був синдром смішного чару requests. Я думав, що response.textце дасть мені правильно розшифрований рядок, але у висновку я знайшов смішні подвійні символи, де мали бути німецькі умлати.
Виявляється, response.encodingбуло якось порожньо, і тому я responseне знав, як правильно розшифрувати вміст, і просто трактував його як ASCII (я думаю).
Моє рішення полягало в тому, щоб отримати необроблені байти з 'response.content' і застосувати decode('utf_8')до нього вручну . Результатом став Schöne Umlaute.
Правильно розшифрована
für
порівняно з неправильно розшифрованими
fĂźr
Усі рядки, призначені для людей, повинні використовувати u "".
Я виявив, що такий спосіб мислення дуже допомагає при роботі з рядками Python: Усі рядки маніфесту Python повинні використовувати u""синтаксис. ""Синтаксис для байтових масивів, тільки.
Перед тим, як починати базінг, дозвольте мені пояснити. Більшість програм Python починаються з використання ""для рядків. Але тоді їм потрібно підтримувати документацію в Інтернеті, тож вони починають використовувати "".decodeі раптом вони отримують винятки скрізь з декодування цього і того - все через використання ""для рядків. У цьому випадку Unicode дійсно діє як вірус і спричинить загрозу.
Але якщо ви будете дотримуватися мого правила, у вас не буде цієї інфекції (тому що ви вже будете заражені).
bash -c "echo Shouldn\\'t you use b\\\"...\\\" for byte arrays?"
u"".
Це Unicode.
Просто поставте змінну між str(), і вона буде добре працювати.
Але якщо у вас є два списки, такі:
a = ['co32','co36']
b = [u'co32',u'co36']
Якщо ви set(a)==set(b)поставите прапорець , він з’явиться як помилковий, але якщо ви зробите наступне:
b = str(b)
set(a)==set(b)
Тепер результат буде правдою.
str()або u'€'.encode()), не передаючи кодування. Якщо рядок містить не-ASCII, користувач отримає UnicodeEncodeException.
b = str(b)просто дає рядок repr()списку, тобто b = "[u'co32', u'co36']". Потімset(a)==set(b) = False