Я пытаюсь прочитать данные IPTC, используя python и pyexiv2.Как правильно декодировать испорченную строку UTF-8?
import pyexiv2
image = pyexiv2.Image('test.jpg')
image.readMetadata()
print image['Iptc.Application2.Caption']
Это дает мне thefollwing:
Copyright: Michael Huebner, Kontakt: +4915100000000xxxxxx Höxx (30) ist im Streit mit dem Arbeitsamt in Brandenburg, xxxxxxxxxxxxxx , xxxxxx,
Но он должен дать мне:
Kinder: Axxxxx Hxxxxx (10) und Exxxxxx Höxx (5), Rxxxxxxx Höxx (30) ist im Streit mit dem Arbeitsamt in Brandenburg, xxxxxxxxxxxxx , xxxxxxxxxxx,
Copyright: Michael Huebner, Kontakt: +4915100000000
Это немного грязный, потому что я должен был удалить личные данные, но вы можете посмотрите, что произошло: «Новая линия» заставляет последнюю часть переопределять первую часть строки.
Но теперь он получает странно:
for i in str(image['Iptc.Application2.Caption']):
print i,
Это просто печатает все символы, включая символ новой строки в правильном порядке. Но это испортило символы «Umlaut».
Это:
unicode(image['Iptc.Application2.Caption'])
дает мне:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 41: ordinal not in range(128)
Так как я могу иметь как: Умляут и правильно струнный Одер? Как я могу исправить эту строку?
Не используйте BLOCKQUOTE, если вам необходимо включить в новые строки вывода. –
Что означает 'print repr (изображение ['Iptc.Application2.Caption'])' show находится в строке? У вас, вероятно, есть '\ r', возврат каретки. –
Да, это \ r. Как я могу это исправить? – JasonTS