питон, vobject, кодирование, vcards

Я использую vobject у питона. Я пытаюсь разобрать vcard расположенный здесь:

http://www.mayerbrown.com/people/vCard.aspx? Attorney=1150

чтобы сделать это, я делаю следующее:

    import urllib
    import vobject

    vcard = urllib.urlopen("http://www.mayerbrown.com/people/vCard.aspx?Attorney=1150").read()
    vcard_object = vobject.readOne(vcard)

Каждый раз, когда я делаю это, я получаю следующую ошибку:

Traceback (most recent call last):
  File "", line 1, in 
    vobject.readOne(urllib.urlopen("http://www.mayerbrown.com/people/vCard.aspx?Attorney=1150").read())
  File "C:\Python27\lib\site-packages\vobject-0.8.1c-py2.7.egg\vobject\base.py", line 1078, in readOne
    ignoreUnreadable, allowQP).next()
  File "C:\Python27\lib\site-packages\vobject-0.8.1c-py2.7.egg\vobject\base.py", line 1031, in readComponents
    vline = textLineToContentLine(line, n)
  File "C:\Python27\lib\site-packages\vobject-0.8.1c-py2.7.egg\vobject\base.py", line 888, in textLineToContentLine
    return ContentLine(*parseLine(text, n), **{'encoded':True, 'lineNumber' : n})
  File "C:\Python27\lib\site-packages\vobject-0.8.1c-py2.7.egg\vobject\base.py", line 262, in __init__
    self.value = str(self.value).decode('quoted-printable')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 29: ordinal not in range(128)

Я попробовал много других изменений на этом, таких как преобразование vcard в unicode , использование различного кодирования, и т.д. Но я всегда получаю то же самое или очень похожее, сообщение об ошибке.

Какие-либо идеи о том, как зафиксировать это?

2
nl ja de
эй. Извините, я просто видел это. Я закончил тем, что решил его, создав мое собственное хакерское проникновение, которое сидит на библиотеке. Не симпатичный. На самом деле его ужасное. Сообщите мне, боретесь ли вы все еще с этим, и я могу просмотреть свой код и помнить то, что я сделал. Это имело отношение к попытке создать объект, если это потерпело неудачу с unicode ошибкой, пытаясь найти часть vcard, который вызвал ошибку, устранив его, и попробовавший еще раз (повторение, пока вы не получаете объект). Результат, вы заканчиваете тем, что теряли некоторые данные из некоторого ppl, но по крайней мере я получаю некоторые данные.
добавлено автор Neil Aggarwal, источник
как вы решали его? Для меня vcard = vcard.decode (' utf 8\U 0026\\U 0023\39;) не помогает. Я также имею дело с en/de, кодирующим в base64 из-за вопросов транспорта.
добавлено автор andilabs, источник
stackoverflow.com/questions/14249288/…
добавлено автор andilabs, источник

3 ответы

Это подводит на линии 13 из vCard, потому что ADR собственность неправильно отмечена как закодированный в "указанный - пригодное для печатания" кодирование. <Код> Б характер должен быть закодирован как =FC , который является, почему vobject бросает ошибку.

2
добавлено
ПРОСТО ИСПОЛЬЗОВАНИЕ: процитированный - пригодный для печатания stackoverflow.com/questions/14249288/…
добавлено автор andilabs, источник

vobject library readOne method is pretty awkward.

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

принятие some_vcard является последовательностью с кодированием UTF-8

quopried_vcard = quopri.encodestring (some_vcard)

и quopried_vcard сохранен, и, когда необходимый просто:

vobj = vobject.readOne (quopried_vcard)

и затем возвращать расшифрованные данные, например, для fn область в vcard:

quopri.decodestring (vobj.fn.value)

Возможно, кто-то может обращаться с UTF-8 с readOne лучше. Если да я хотел бы видеть его.

0
добавлено

Файл загружается как UTF-8 (я думаю), закодированная последовательность, но библиотека пытается интерпретировать его как ASCII.

Попытайтесь добавить следующую линию после urlopen:

vcard = vcard.decode('utf-8')
0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community