Я думаю, что вы действительно хотите это:
>>> re.findall('\d+', sntc)
['5678', '123', '345', '2345']
У вашего regex
есть небольшая проблема, и может закончиться так:
>>> re.split('\D*', sntc)
['', '', '5', '6', '7', '8', '', '1', '2', '3', '', '3', '4', '5', '', '2', '3', '4', '5', '', '']
Я думаю, что вы намеревались сделать является:
>>> re.split('\D+', sntc)
['', '5678', '123', '345', '2345', '']
Тем не менее, это то, что split
о, он расщепляет вещи, даже если он оставляет nothing
.
Рассмотрим CSV
или TAB
разделенных xls
файлов.
Это разработано так. - Даже если между запятыми или табуляцией нет ничего, эти столбцы все еще существуют - пустые столбцы.
И \D+
здесь, он работает как comma
или TAB
, он будет действовать как разделитель столбцов, независимо от того, есть ли у вас что-то перед ним или нет, он будет обозначать новый [ 1112] после него.
То же самое для последнего \D+
сопоставленного содержимого, независимо от того, следите за ним или нет, оно все равно обозначает новый column
после него.
UTF-8, как предполагается, обрабатывает все диакритические знаки и внешние символы - почему бы не использовать его на Вашем источнике данных?
РЕДАКТИРОВАНИЕ
[ Архивная копия тестового файла. ] с Вашими данными
Все должно быть UTF-8 во-первых. Я загрузил файлы в блокноте ++, преобразованный в utf-8 и вручную изменился, charactes к диакритическим знакам были необходимы. После того, как сделанный все работает как очарование.
BTW, если Ваш сервер не определяется для php-обрабатывания .html файлов, файлы, которые Вы загружаете ajax, не получают Ваш набор символов ISO. Если Вы настаиваете на том, чтобы использовать набор символов ISO, запрашиваете php файл вместо файла HTML и определяете набор символов в заголовке (не в самом файле)
IВґve имел ту же проблему со страницами что:
Для решения проблемы (использующий php), я использовал utf8_encode()
или htmlentities()
на исходных данных. Оба работали, я использовал их в различных проектах.
При распечатывании переменных в ajax файле. Поместите
htmlentities()
Вокруг них, посмотрите, работает ли это. Работавший для меня в исландском ajax приложении.
Необходимо настроить сервер для использования ISO-8859-15 в качестве кодировки символов (добавляющий соответствующий HTTP-заголовок). Выполнение его в теле HTML не поможет.
я вижу эту строку
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
в источнике Вашего HTML. Этого не должно происходить. Используя Живые HTTP-заголовки я не вижу соответствующего HTTP-заголовка набора символов. Используйте это и для Вашей первой страницы и для ajax сервиса.
Определение типа контента на вызове AJAX решило мои проблемы на норвежском сайте.
$.ajax({
data: parameters,
type: "POST",
url: ajax_url,
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
dataType: 'json',
success: callback
});
необходимо было бы также указать набор символов на сервере.
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
Я НЕ СОГЛАСЕН, все должно быть в кодировке UTF-8, вы можете заставить его отлично работать с ISO 8859, я это сделал, пожалуйста, прочтите мой ответ здесь.
$str=iconv("windows-1250","UTF-8",$str);
Что помогло мне в конце концов
Я бы настоятельно рекомендовал использовать метод javascript escape()
Вы можете использовать его с jQuery, захватив значение формы следующим образом:
var encodedString = escape($("#myFormFieldID").val());
У меня были похожие проблемы, когда я работал в системе комментариев к контенту на нашем испанском портале.
Что, наконец, решило мою проблему, после многих часов поиска, вместо того, чтобы возиться с кодировкой jQuery, которая, похоже, использует utf-8, несмотря ни на что, это было декодирование из utf-8 обратно в ISO-8859-1 в обработанном PHP сообщение ajax POST. В PHP есть встроенная функция utf8_decode ()
, поэтому первое, что я делаю со строкой комментариев, это:
$comentario = utf8_decode($_POST['comentario']);
(а затем я использовал nl2br ()
и htmlentities ()
Функции PHP для подготовки текста к сохранению с использованием html-сущностей вместо специальных символов)
Всем удачи и мира! Себа
Я возился с этой проблемой и обнаружил, что это решение работает для Firefox и safari (да, сейчас я на mac).
при получении запроса я сделал content-type=iso-8859-1 здесь:
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml; charset=ISO-8859-1');
}
}
Пожалуйста, скажите мне, если кто-то обнаружит, что это не работает в ie.