1
Насколько я понял, в юникоде нет отдельных диапазонов для упрощенных и традиционных иероглифов
Существует ли регулярное выражение, позволяющее убрать из текста традиционные иероглифы? или как это можно сделать иным способом?
Think for yourself, question authority
2022.02.07
ЛС Ответить
2
2022.02.07Opiate Насколько я понял, в юникоде нет отдельных диапазонов для упрощенных и традиционных иероглифов
Существует ли регулярное выражение, позволяющее убрать из текста традиционные иероглифы? или как это можно сделать иным способом?

Есть встроенная функция в Libre Office по замене традиционных на упрощённые. Повозившись, из этого можно сделать механизм убирания из текста конкретно традиционных иероглифов.
2022.02.07
ЛС Ответить
3
test4,
да, конвертеры различные онлайн есть
у меня несколько иная задача - просто по возможности убрать традиционные иероглифы из текста

пока я нашел список 8300 традиционных иероглифов cj5-8300 для 倉頡
убрал все кроме иероглифов, сконвертировал в массив юникод-значений
изначальный текст тоже переконвертировал в массив юникод-значений
теперь надо один массив отсортировать по второму и выкинуть ненужное

но, может, есть что-то попроще?
2022.02.07
ЛС Ответить
4
2022.02.07Opiate test4,
да, конвертеры различные онлайн есть
у меня несколько иная задача - просто по возможности убрать традиционные иероглифы из текста

Если чистый текст, а не сложное форматирование, то легко. Берете весь диапазон возможных символов, кладете в один массив. Берете тот же диапазон, прогнанный вручную через конвертер, получаете второй массив. Удаляете из первого массива все символы, которые между массивами отличаются (то есть все упрощённые). Из оставшихся в первом (это и будут все традиционные), если хотите, можете регулярное выражение сделать, ну или скрипт, который все такие символы из любого текстового файла удаляет. Если с php/python хоть немного дружите, задача несложная.
2022.02.07
ЛС Ответить
5
test4,
я по юникоду сделаю, а его потом в иероглифы и латницу конвертну
завтра подумаю, как отфильтровать/отсортировать
пока что у меня оба массива вот так выглядят



2022.02.07
ЛС Ответить
6
2022.02.07Opiate Существует ли регулярное выражение, позволяющее убрать из текста традиционные иероглифы? или как это можно сделать иным способом?

заинтересовался сам) там походу unicode у них вперемешку для упрощенных и традиционных, поэтому сложно подобрать диапазон, нужно сравнивать каждый иероглиф по словарю-фильтру.

можно попробовать этот скрипт для удаления трад. иероглифов из txt-файла. Там правда на nodejs (если его нет, то надо установить)
ChinesePlus.club все могут делиться текстами и видео на китайском
2022.02.07
ЛС Ответить
7
Регулярки к сожалению нет, всё подобное делается списками.

2022.02.07Opiate пока я нашел список 8300 традиционных иероглифов cj5-8300 для 倉頡
убрал все кроме иероглифов, сконвертировал в массив юникод-значений
изначальный текст тоже переконвертировал в массив юникод-значений
теперь надо один массив отсортировать по второму и выкинуть ненужное

но, может, есть что-то попроще?

Зачем их в юникод конвертировать, почему нельзя просто удалить по списку?
2022.02.07
ЛС Ответить
8
snum23,
да, работает, спасибо  56
я список слов для старого чск решил подготовить на карточки, скобки удалить, традиционные иероглифы по возможности

бкрс,
я даже написал решение
но слишком громоздкое 118
завтра покопаюсь, как можно сделать простым удалением по списку
2022.02.07
ЛС Ответить
9
2022.02.07Opiate завтра покопаюсь, как можно сделать простым удалением по списку

Самое примитивное for (....) text=text.replace(x, '') должно нормально работать, буквально две строчки.

И не понятно на счёт удаления, там что, традиционные и упрощённые просто идут рядом, типа 正體体字. Если там в скобках как по ссылке, то скобки и нужно в регулярке использовать: /\([^\)]+,/
2022.02.08
ЛС Ответить
10
Для Python:


pip install hanzidentifier

Python module that identifies Chinese text as Simplified or Traditional.

>>> import hanzidentifier
>>> hanzidentifier.has_chinese('Hello my name is John.')
False
>>> hanzidentifier.is_simplified('John说:你好!')
True
>>> hanzidentifier.is_traditional('John說:你好!')
True
>>> hanzidentifier.has_chinese('Country in Simplified: 国家. Country in Traditional: 國家.')
True



pip install zhconv

zhconv 提供基于 MediaWiki 词汇表的最大正向匹配简繁转换。Python 2, 3 通用。支持以下地区词转换:

zh-cn 大陆简体
zh-tw 台灣正體
zh-hk 香港繁體
zh-sg 马新简体(无词汇表,需要手工指定)
zh-hans 简体
zh-hant 繁體

>>> print(convert(u'我幹什麼不干你事。', 'zh-cn'))
我干什么不干你事。
>>> print(convert(u'人体内存在很多微生物', 'zh-tw'))
人體內存在很多微生物



pip install hanziconv

Hanzi Converter for Traditional and Simplified Chinese

>>> from hanziconv import HanziConv
>>> print(HanziConv.toSimplified('繁簡轉換器'))
繁简转换器
>>> print(HanziConv.toTraditional('繁简转换器'))
繁簡轉換器
>>> HanziConv.same('繁簡轉換器', '繁简转换器')
True



pip install OpenCC

Open Chinese Convert 開放中文轉換

>>>import opencc
>>>converter = opencc.OpenCC('s2t.json')
>>>converter.convert('汉字') # 漢字
2022.02.09
Ответить