Преобразовать строку Юникода в строку в Python (содержащую дополнительные символы)

Вы должны просто поместить значения в круглые скобки:

'%s in %s' % (unicode(self.author),  unicode(self.publication))

Здесь для первого %s будет помещен unicode(self.author). И для второго %s будет использоваться unicode(self.publication).

Примечание. Вы должны string formatting использовать % Notation. Подробнее здесь

blockquote>

471
задан jfs 22 March 2016 в 17:05
поделиться

6 ответов

title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
'Kluft skrams infor pa federal electoral groe'
554
ответ дан 22 November 2019 в 22:45
поделиться

Никакой answere не работал на мой случай, где у меня была строковая переменная, содержащая unicode символы, и не закодируйте - декодируют объясненный, здесь сделал работу.

, Если я делаю в Терминале

echo "no me llama mucho la atenci\u00f3n"

или

python3
>>> print("no me llama mucho la atenci\u00f3n")

, вывод корректен:

output: no me llama mucho la atención

, Но работающий со сценариями, загружающими эту строковую переменную, не работал.

Это - то, что работало над моим случаем , в случае, если помогает кому-либо:

string_to_convert = "no me llama mucho la atenci\u00f3n"
print(json.dumps(json.loads(r'"%s"' % string_to_convert), ensure_ascii=False))
output: no me llama mucho la atención
0
ответ дан 22 November 2019 в 22:45
поделиться

Вот пример:

>>> u = u'€€€'
>>> s = u.encode('utf8')
>>> s
'\xe2\x82\xac\xe2\x82\xac\xe2\x82\xac'
57
ответ дан 22 November 2019 в 22:45
поделиться

Что ж , если вы хотите / готовы переключиться на Python 3 (чего может не быть из-за обратной несовместимости с некоторым кодом Python 2), вам не нужно выполнять какое-либо преобразование; весь текст в Python 3 представлен строками Unicode, что также означает, что синтаксис u '' больше не используется. У вас также есть то, что по сути является строками байтов, которые используются для представления данных (которые могут быть закодированной строкой).

http: // docs.

5
ответ дан 22 November 2019 в 22:45
поделиться

Если у вас есть строка Unicode, и вы хотите записать ее в файл или другую сериализованную форму, вы должны сначала закодировать ее в определенное представление, которое может быть хранится. Существует несколько распространенных кодировок Unicode, таких как UTF-16 (использует два байта для большинства символов Unicode) или UTF-8 (1-4 байта / кодовая точка в зависимости от символа) и т. Д. Чтобы преобразовать эту строку в определенную кодировку, вы можно использовать:

>>> s= u'£10'
>>> s.encode('utf8')
'\xc2\x9c10'
>>> s.encode('utf16')
'\xff\xfe\x9c\x001\x000\x00'

Эта необработанная строка байтов может быть записана в файл. Однако обратите внимание, что при чтении его обратно вы должны знать, в какой кодировке он находится, и декодировать его, используя ту же самую кодировку.

При записи в файлы вы можете избавиться от этого ручного процесса кодирования / декодирования, используя модуль кодеков . Итак, чтобы открыть файл, который кодирует все строки Unicode в UTF-8 , используйте:

import codecs
f = codecs.open('path/to/file.txt','w','utf8')
f.write(my_unicode_string)  # Stored on disk as UTF-8

Обратите внимание, что все, кто использует эти файлы, должны понимать, в какой кодировке находится файл, если они хотят их прочитать. Если вы единственный, кто выполняет чтение / запись, это не проблема, в противном случае убедитесь, что вы пишете в форме, понятной для всех, кто использует файлы.

В Python 3 эта форма доступа к файлам используется по умолчанию , а встроенная функция open будет принимать параметр кодировки и всегда переводить в / из строк Unicode (строковый объект по умолчанию в Python 3) для файлов, открытых в текстовом режиме.

112
ответ дан 22 November 2019 в 22:45
поделиться

Вы можете использовать кодирование в ASCII, если вам не нужно переводить символы, отличные от ASCII:

>>> a=u"aaaàçççñññ"
>>> type(a)
<type 'unicode'>
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>
312
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: