2013-04-19 3 views
2

В процессе анализа данных из веб-запроса, я наткнулся на следующую строку -Не удается разделить, казалось бы, закодированную строку

dateRange = 'September\xa04,\xa01978 – September 1980' 

Кодирование извлеченной строки, как представляется, Latin-1 (на основе \xa0). Я избавился от этого, заменив коды пробелами.

dateRange = dateRange.replace(u'\xa0', u' ') 

Сохраняя это, я не могу разделить строку на дефис (-).

Когда слово раскол() следующим образом:

print(dateRange.split('-')) 

Выход следующим образом:

['September\xa04,\xa01978 – September 1980'] 

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

Итак, как обойти эту проблему?

EDIT:

Я уже пробовал следующие без толку:

dateRange.split('\-') 
+1

- (персонаж в вашей дате) и - персонаж, на котором вы раскалываете, не похоже на одно и то же. Предполагая, что вы аккуратно вставили их, у вас есть разные символы: - – borrible

ответ

5

Это не hyphen. Это U+2013 ᴇɴ ᴅᴀsʜ.

Просто скопируйте & вставьте его в свой раздельный вызов:

dateRange.split('–') 

В качестве альтернативы, вы можете заменить его с фактическим дефисом. Обязательно скопируйте & вставьте en dash в вызов замены :)

+1

Это не луна! –

+1

И если вы собираетесь разместить буквальный Unicode в своем источнике, не забудьте указать исходный файл 'coding ='; см. http://www.python.org/dev/peps/pep-0263/ – msw

+0

Я использовал литерал юникода, как это - 'dateRange.split (u '\ u2013')'. Это сделал трюк. –

Смежные вопросы