|
"Выкусить" текст из 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) Использование регэкспов более универсально, применимо для любых ЯП, можно даже батник сварганить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |