|   |   | 
| 
 | "Выкусить" текст из HTML | ☑ | ||
|---|---|---|---|---|
| 0
    
        Мэс33 20.11.15✎ 06:10 | 
        Есть такой кусок HTML - строка с ячейками:
 <tr class="SectionAll"> <td class="TextItemSigDiffMod Wrap">  HASH="<span class="TextSegSigDiff">75F0F2F0601D696D026B5F</span><span class="TextSegSigDiff">9</span><span class="TextSegSigDiff">2B1B2468</span><span class="TextSegSigDiff">2</span>"></td> <td class="AlignCenter Wrap"><></td> <td class="TextItemSigDiffMod Wrap">  HASH="<span class="TextSegSigDiff">9</span><span class="TextSegSigDiff">F89</span><span class="TextSegSigDiff">D5A5D</span><span class="TextSegSigDiff">23</span><span class="TextSegSigDiff">53CA3D93528</span><span class="TextSegSigDiff">80D732E539</span>"></td> </tr> Нужно выдернуть HASH. То есть получить на выходе два значения: HASH="75F0F2F0601D696D026B5F92B1B24682" HASH="9F89D5A5D2353CA3D9352880D732E539" Подскажете как? Что-то с утра туплю. И да, теги <span> могут быть в разных местах. И да, решение можно не в 1С. Встречающийся   может быть один или несколько. Досконально не проверял, у меня этих файлов 799 штук. | |||
| 1
    
        Kandellaster 20.11.15✎ 06:36 | 
        через regexp, примеры шаблона регулярного выражения и использования regexp в 1С хорошо гугляца     | |||
| 2
    
        Мэс33 20.11.15✎ 06:37 | 
        (1) Я не сильно дружу с regexp. Подскажете вариант решения?     | |||
| 3
    
        Kandellaster 20.11.15✎ 06:40 | 
        что то вроде этого /^[a-f0-9]{32}$/i     | |||
| 4
    
        Мэс33 20.11.15✎ 06:42 | 
        (3) Проверил тут - https://regex101.com/#python
 Что-то не пойму. | |||
| 5
    
        Горогуля 20.11.15✎ 06:45 | 
        откуда второй хэш выдумал?     | |||
| 6
    
        ASV 20.11.15✎ 06:48 | 
 | |||
| 7
    
        Горогуля 20.11.15✎ 06:48 | 
        вижу. может, убрать все тэги со спанами для начала, они ж одинаковые. ну и слова с амперсандами     | |||
| 8
    
        michael512 20.11.15✎ 06:54 | 
        RegExp = Новый COMОбъект("VBScript.RegExp");
 RegExp.Global = Истина; RegExp.Pattern = "<.*?>"; Результат = RegExp.Replace(ИсходнаяСтрока, ""); Результат = СтрЗаменить(Результат," ", ""); Результат = СтрЗаменить(Результат,"<", ""); Результат = СтрЗаменить(Результат,">", ""); Результат = СтрЗаменить(Результат,""", """"); Результат = СтрЗаменить(Результат," ", ""); вот накодил | |||
| 9
    
        michael512 20.11.15✎ 06:56 | 
        ну и из результата удалить пару лишних символов.ПС     | |||
| 10
    
        Мэс33 20.11.15✎ 06:56 | 
        (8) Хорошая идея - очистить все от <...>, а потом остаток вычистить. 
 (6) Спасибо. А я думал - по DOM пробежаться, по тегам пропарсить. Проще работать как с текстом. | |||
| 11
    
        michael512 20.11.15✎ 06:58 | 
        (10) не за что ;) всегда так делаю, сначала тэги потом остальное     | |||
| 12
    
        michael512 20.11.15✎ 08:56 | 
        Приступ перфекционизма напал сделал более отшлифованный вариант:
 RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Global = Истина; ИсходнаяСтрока = СтрЗаменить(ИсходнаяСтрока,""", """"); RegExp.Pattern = "<.*?>|&.*?;|[ ]*"; Результат = RegExp.Replace(ИсходнаяСтрока, ""); | |||
| 13
    
        Мэс33 20.11.15✎ 09:30 | 
        (12) " - даже не нужно менять     | |||
| 14
    
        Мэс33 20.11.15✎ 09:38 | 
        (12) Бинго, красиво и лаконично
 import re def clean_html(tt): return re.sub("<.*?>|&.*?;|[ ]*", '', tt).strip() return tt f = open("APACC_01.ddc.xml.html") fd = f.readlines() hash1 = clean_html(fd[81]) hash2 = clean_html(fd[83]) print hash1 print hash2 | |||
| 15
    
        Lama12 20.11.15✎ 09:52 | 
        А ПолучитьТекст() разве не то вернет?     | |||
| 16
    
        michael512 20.11.15✎ 16:09 | 
        (15) Использование регэкспов более универсально, применимо для любых ЯП, можно даже батник сварганить     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |