Буквенный разбор слова раз: Фонетический разбор слова и звуко-буквеннный анализ

python — pyparsing — определение ключевых слов — сравнение Literal, Word, Keyword и Combine

Вот некоторый тестовый код для сравнения выражений pyparsing.

 из импорта pyparsing *
functor1 = Литерал ('a') | Литерал('b') | Буквальный ('c')
functor2 = Word('a') | Слово('б') | Слово ('с')
functor3 = Ключевое слово ('a') | Ключевое слово('b') | Ключевое слово ("с")
functor4 = Объединить (Ключевое слово ('a') | Ключевое слово ('b') | Ключевое слово ('c'))
functor1.setName("Литерал('a') | Литерал('b') | Литерал('c')")
functor2.setName("Слово('а') | Слово('б') | Слово('с')")
functor3.setName("Ключевое слово('a') | Ключевое слово('b') | Ключевое слово('c')")
functor4.setName("Объединить(Ключевое слово('a') | Ключевое слово('b') | Ключевое слово('c'))")
функторы = [функтор1, функтор2, функтор3, функтор4]
тесты = "a b c aaa bbb ccc после до".split()
для func в функторах:
    функция печати
    для t в тестах:
        пытаться:
            напечатать t, ':', func.parseString(t)
        кроме ParseException как PE:
            печатать пе
    Распечатать
 

печатает:

 Литерал('a') | Литерал('b') | Буквальный ('c')
а: ['а']
б : ['б']
с: ['с']
ааа : ['а']
ббб : ['б']
копия : ['с']
после']
перед: ['б']
Слово('а') | Слово('б') | Слово ('с')
а: ['а']
б : ['б']
с: ['с']
ааа : ['ааа']
ббб : ['ббб']
копия : ['копия']
после']
перед: ['б']
Ключевое слово('а') | Ключевое слово('b') | Ключевое слово ("с")
а: ['а']
б : ['б']
с: ['с']
aaa : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
bbb : Ожидается «a» (в символе 0), (строка: 1, столбец: 1)
ccc : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
after : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
до : ожидается "а" (в символе 0), (строка: 1, столбец: 1)
Объединить(Ключевое слово('a') | Ключевое слово('b') | Ключевое слово('c'))
а: ['а']
б : ['б']
с: ['с']
aaa : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
bbb : Ожидается «a» (в символе 0), (строка: 1, столбец: 1)
ccc : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
after : Ожидается "a" (в символе 0), (строка: 1, столбец: 1)
до : ожидается "а" (в символе 0), (строка: 1, столбец: 1)
 

Вы должны быть в состоянии сделать следующие наблюдения:

  • Литерал будет соответствовать заданной строке, даже если это только начало более крупная строка.

  • Word будет соответствовать словесной группе символов состоящий из букв в строке конструктора.

  • Ключевое слово будет соответствует заданной строке только в том случае, если она не является частью большего слова (за которым следует пробел или символ, не являющийся словом)

  • комбайн нет действительно сделать что-нибудь в этом примере.

Целью Combine является объединение нескольких совпадающих токенов в одну строку. Например, если вы определили номер социального страхования как:

 Word(nums,exact=3) + '-' + Word(nums,exact=2) + '-' + Word(nums,exact=4)
 

, тогда разбор «555-66-7777» даст вам

 ['555', '-', '66', '-', '7777']
 

Скорее всего, вы бы хотели, чтобы это была одна строка, поэтому объедините результаты, заключив выражение парсера в Объединить :

 Объединить (Слово (числа, точное значение = 3) + '-' + Слово (число, точное значение = 2) + '-' + Слово (число, точное значение = 4))
['555-66-7777']
 

Re: PDF Строка буквального анализа — сообщество поддержки Adobe

У меня есть следующее содержимое на одной и той же странице PDF, в разных объектах:

Ссылка на исходный файл

Первый :

[(немного текста)]] TJ ET Q

    [(какой-то другой текст)] TJ ET Q

Очень простой и простой до сих пор. ..

**Второй**:

    [( HTM L   Ex a m p l e)] TJ ET Q

    [( S o m e   s e c i a l   x a r a c r a s :   <   ¬   ¬   ¬   &  ט   ט   ©   >

   \\ s l a s h   \\ \\ d o u b l e — s l a s h   \\ \\ \\ t r i p l e — s l a s h  )] TJ ET Q

ПРИМЕЧАНИЕ :  Это не заметно в тексте выше, но: 0T0M0L 0[32] 0E0x0a0m0p0l0e где каждый 0 является буквальным значением 0 == ((char)0) , поэтому, если я проигнорирую все значения 0, это на самом деле будет похоже на предыдущий пример…

Несколько байтов:

 

    htmlexample == [0, 72, 0, 84, 0, 77, 0, 76, 0, 32, 0, 69, 0, 120, 0, 97, 0, 109, 0, 112, 0, 108, 0, 101]

      == [0, 32, 32, -84, 0, 32, 32, -84, 0, 32, 32, -84, 0, 32, 0, 38, 0, 32, 0, -24, 0, 32, 0, -24 , 0, 32, 0, -87, 0, 32, 0]

Но в следующей строке мне нужно объединить каждые два байта в char из-за следующего:

<   ¬   ¬   ¬...> на самом деле <0[32] [32]- 0[32] [32]- 0[32] [32]- .

..>, где комбинация of [32]¬ is €

Шрифт, используемый для проблемного объекта:

    #7 0# {

        ‘Name’ : «F4»

       ‘BaseFont’ : «AAAAAE+DejaVu Sans-Bold»

        ‘ Subtype’ : «Type0»

        ‘ToUnicode’ : #41 0# {

            ‘Filter’ : «FlateDecode»

            ‘Length’ : 1679.0f

        } + Stream(5771 байт)

        ‘Кодировка’ : «Identity-H»

        ‘DescendantFonts’ : [#42 0# {

9000 2             ‘FontDescriptor’ : #43 0# {

                      ‘MaxWidth’ : 2016.0f

               ‘AvgWidth’ : 573.0f

               ‘FontBBox’ : [-1069.0f, -415.0f, 1975.0f, 1174.0f]

               ‘MissingWidth’ : 600.0f

               ‘FontName’ : «AAAAAE+DejaVuSans -Жирный»

               ‘Тип’ : «FontDescriptor»

                ‘CapHeight’ : 729.0f

                ‘StemV’ : 60.0f 0.0f ‘ : » FlateDecode»

                   ‘Length2’ : 83036. 0f

                   ‘Length’ : 34117.0f

                } + Stream(83036 байт)

                       ‘Восхождение’ : 928.0f

               ‘Descent’ : -236.0f

                ‘XHeight’ : 547.0f

                ‘StemH’ : 2 6.0f

               ‘Flags’ : 32.0f

                ‘ItalicAngle’ : 0.0f

            }

9 0002             ‘Подтип’ : «CIDFontType2»

            ‘W’ : [32.0f, [348.0f, 456.0f, 521.0f, 838.0f, 696.0f, 1002.0f, 872.0f, 306.0f, 457.0f, 457 .0f, 523.0f, 838.0f, 380.0f, 415.0f, 380.0f, 365.0f], 48.0f, 57.0f, 696.0f, 58.0f, 59.0f, 400.0f, 60.0f, 62.0f, 838.0f, 63.0f, [580.0f, 1000.0f, 774.0f, 762.0f, 734.0f, 830.0f, 683.0f, 683.0f, 821.0 е, 837.0f, 372.0f, 372.0f, 775.0f, 637.0f, 995.0f, 837.0f, 850.0f, 733.0f, 850.0f, 770.0f, 720.0f, 682.0f, 812.0f, 774.0f, 1103.0ф, 771.0f, 724.0f, 725.0f, 457.0f, 365.0f, 457.0f, 838.0f, 500.0f, 500.0f, 675.0f, 716.0f, 593.0f, 716.0f, 678.0f, 435.

0f, 7 16.0f, 712.0f , 343.0f, 343.0f, 665.0f, 343.0f, 1042.0f, 712.0f, 687.0f, 716.0f, 716.0f, 493.0f, 595.0f, 478.0f, 712.0f, 652.0f, 924.0f, 645.0f, 652.0f, 582.0f, 712.0f, 365.0f, 712.0f, 838.0f], 160.0f, [348.0f, 456.0f, 696.0f, 696.0f, 636.0f, 696.0f, 36 5.0ф, 500.0f, 500.0f, 1000.0f, 564.0f, 646.0f, 838.0f, 415.0f, 1000.0f, 500.0f, 500.0f, 838.0f, 438.0f, 438.0f, 500.0f, 736.0f, 636.0ф, 380.0ф , 500.0f, 438.0f, 564.0f, 646.0f], 188.0f, 190.0f, 1035.0f, 191.0f, 191.0f, 580.0f, 192.0f, 197.0f, 774.0f, 198.0f, [1085.0 ф, 734.0f ], 200.0f, 203.0f, 683.0f, 204.0f, 207.0f, 372.0f, 208.0f, [838.0f, 837.0f], 210.0f, 214.0f, 850.0f, 215.0f, [838.0f, 850.0f] , 217.0f, 220.0f, 812.0f, 221.0f, [724.0f, 738.0f, 719.0f], 224.0f, 229.0f, 675.0f, 230.0f, [1048.0f, 593.0f], 232.0f, 235.0f, 678.0f, 236.0f, 239.0f, 343.0f, 240.0f, [687.0f, 712 .0 ж, 687.0f, 687.0f, 687.0f, 687.0f, 687.0f], 247.0f, [838.0f, 687.0f], 249.0f, 252.0f, 712.0f, 253.0f, [652.0f, 716.0f]]

            ‘Тип’ : «Шрифт»

            ‘BaseFont’ : «AAAAAE+DejaVuSans-Bold»

           ‘CIDSystemInfo’ : {

90 002                ‘Дополнение’ : 0. 0f

                ‘Порядок’ : «Идентификация» + Stream(8 байт )

               ‘Реестр’ : «Adobe» + Stream (5 байт)

            }

            ‘DW’ : 600.0f

9000 2             ‘CIDToGIDMap’ : #44 0# {

                ‘Фильтр’ : «FlateDecode»

                ‘Длина ‘ : 10200.0f

            } + Stream(131072 байт)

        }]

        ‘Тип’ : «Шрифт»

   }

Нет указания на тип кодировки шрифта.

Что касается объекта ToUnicode, то в случае с этим шрифтом он не нужен, он должен был быть Identity-H, но вместо этого это сопоставление X == X вот несколько примеров, которые идут от до FFFF:

    <0000> <00ff> <0000>

    <0100> <01ff> <0100>

    <0200> <02ff> <0200>

    <0300> <0 3ff> <0300>

    <0400> < 04ff> <0400>

    <0500> <05ff> <0500>

    <0600> <06ff> <0600>

    <0700> <07ff> <0700>

    <0800> <08ff> <0800>

    <0900> <09ff> <0900>

    <0a00> <0aff> <0a00>

    <0b00> <0bff> <0b00>

    <0c00> <0c ff> <0c00>

    <0d00> < 0dff> <0d00>

    <0e00> <0eff> <0e00>

    <0f00> <0fff> <0f00>

    <1000> <10ff> <1000>

    <1100> <11ff> <1100>

    .

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *