Как конвертировать обведенные числа в числа? (① к 1)

Я собираюсь быть противоположным здесь и сказать, что нет необходимости в auto const & в диапазоне, основанном на цикле. Скажите мне, считаете ли вы, что следующая функция глупа (не в своей цели, а в том, как она написана):

long long SafePop(std::vector<uint32_t>& v)
{
    auto const& cv = v;
    long long n = -1;
    if (!cv.empty())
    {
        n = cv.back();
        v.pop_back();
    }
    return n;
}

Здесь автор создал ссылку на константу v для использования для всех операций, которые не изменяют v. Это, на мой взгляд, глупо, и тот же аргумент может быть сделан для использования auto const & в качестве переменной в диапазоне, основанном на цикле, а не только на auto &.

2
задан Jonathan Muller 21 February 2019 в 03:17
поделиться

2 ответа

Я бы использовал unicodedata

import unicodedata
print(unicodedata.normalize("NFKC","③① 年 ⑫ 月 ①③ 日"))

В результате получилось:

31 年 12 月 13 日

Это также преобразует другие варианты японских цифр, цифры полной ширины.

import unicodedata
print(unicodedata.normalize("NFKC","123①②③123"))

-

123123123
0
ответ дан akky 21 February 2019 в 03:17
поделиться

Предполагая, что у вас уже есть текст OCR'd для обведенных цифрами в вашем вопросе, будет достаточно простой замены текста. Вот как это делается в Python:

def uncircle(s):
    for i in range(1, 21):
        s = s.replace(chr(0x245f + i), str(i))
    return s.replace('\u24ea', '0')

Обведенные числа от 1 до 20 - это кодовые точки Unicode от 0x2460 до 0x2473, а обведенное число 0 - это кодовая точка Unicode 0x24ea.

0
ответ дан Joseph Sible 21 February 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: