Обработка двунаправленного текста на урду в текстовых редакторах и Python
Я хотел обработать некоторый двунаправленный текст (на урду и английском) в документе MS Word с помощью скрипта Python, который преобразует текст в разметку таблицы. Я не могу получить прямой доступ к двунаправленному тексту из документа Word, как это происходит в двоичном формате, и даже если я скопирую текст из документа Word в текстовый редактор, вставьте его, тогда весь двунаправленный текст будет неправильно потерять направленность.
Пример:
Следующий текст отображается в обратном направлении от исходного текста MSWord, откуда я его скопировал (текст на языке урду):
изображения پر ہے۔
Итак, как обработать такой биди-текст, чтобы он правильно отображался в текстовом редакторе, таком как notepad++, и, следовательно, мог быть точно обработан скриптом Python?
1 ответ
Во-первых, не полагайтесь на то, что биди-текст правильно отображается в файле Word. Это не гарантирует, что тот же текст будет отображаться правильно в другой среде. В Microsoft Word есть собственный способ обработки двунаправленного текста в текущих и устаревших версиях, который не обязательно должен соответствовать текстовым редакторам, совместимым с Unicode (например, gedit). Это может или не может быть решено в конечном итоге, так как Microsoft будет внедрять более новую версию двунаправленного алгоритма Unicode в продуктах.
Во-вторых, причина, по которой вы не видите скопированный текст должным образом, заключается в том, что ваша текстовая среда (в том числе здесь) не поддерживает двунаправленный текст должным образом, и даже невозможно отобразить текст справа налево. Я скопировал ваш пример строки в текстовом редакторе, совместимом с Unicode, и изменил направление вправо, и это правильный результат.
Теперь, чтобы иметь возможность обрабатывать ваш текст в этом файле Word с помощью Python, вам нужно немного импровизировать. Вы можете экспортировать текстовое содержимое как текст Unicode, а затем обработать его с помощью Python. Или, если вы хотите обработать текстовое содержимое на месте (внутри Word), вы можете получить некоторые удовлетворительные результаты из сценариев OLE-компонентов вашего Python. Смотрите соответствующий вопрос здесь.