Форум сайта python.su
0
Здрям!
html-код немного почищен.Надо дернуть русское скоращенное название компании:
<table>Наименование:</td> <table>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование:</td> <table>ООО "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование (Eng):</td> <table>OOO "Roga"</td>
CompanyName=re.search(r'Сокращенное наименование:[\<\>\/\stabled]*([А-я\s-\"]*)', full) print(CompanyName.group(1))
Traceback (most recent call last): File "C:\париснг.py", line 49, in <module> CompanyName=re.search(r'Сокращенное наименование:[\<\>\/\stabled]*([А-я\s-\"]*)', full) File "C:\Program Files\Python 3.5\lib\re.py", line 173, in search return _compile(pattern, flags).search(string) File "C:\Program Files\Python 3.5\lib\re.py", line 293, in _compile p = sre_compile.compile(pattern, flags) File "C:\Program Files\Python 3.5\lib\sre_compile.py", line 536, in compile p = sre_parse.parse(p, flags) File "C:\Program Files\Python 3.5\lib\sre_parse.py", line 783, in parse p = _parse_sub(source, pattern, 0) File "C:\Program Files\Python 3.5\lib\sre_parse.py", line 397, in _parse_sub itemsappend(_parse(source, state)) File "C:\Program Files\Python 3.5\lib\sre_parse.py", line 725, in _parse p = _parse_sub(source, state) File "C:\Program Files\Python 3.5\lib\sre_parse.py", line 397, in _parse_sub itemsappend(_parse(source, state)) File "C:\Program Files\Python 3.5\lib\sre_parse.py", line 530, in _parse raise source.error("bad character range", len(this)) sre_constants.error: bad character range at position 50
Отредактировано Kir@ (Май 5, 2016 16:06:02)
Офлайн
568
Для парсинга html/xml есть куча готовых решений, как в составе стандартной библиотеки так и отдельно от нее, регексп - плохой выбор.
Офлайн
0
FishHook, я знаю эти решения. И знаю, как “прекрасно” они работают.
У меня сейчас есть конкретный вопрос: какого таежного органа регуляркой не удается получит данные? В той же программе есть еще 12 блоков, которые точно так же точно теми же регулярками получают другие данные. А вот наименование не хочет.
Офлайн
568
Где ты вообще такой html взял?
<table>Наименование:</td> <table>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование:</td> <table>ООО "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование (Eng):</td> <table>OOO "Roga"</td>
Офлайн
0
FishHook, согласен.
Ошибку как исправить?
Офлайн
253
CompanyName=re.search(ur'Сокращенное наименование:[\<\>\/\stabled]*([А-я\"\s]*)', s) print CompanyName.group(1) >>> ООО "Рога и копытца"
Офлайн
221
Kir@регулярки часто это кровь и боль. Просто примите этот факт.
Я уже готов монитор разбить!
>>> print(s) <table>Наименование:</td> <table>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование:</td> <table>ООО "Рога и копытца"</td> </tr> <table> <table>Сокращенное наименование (Eng):</td> <table>OOO "Roga"</td> >>> re.findall(r'Сокращенное наименование\:.*?table\>(.*?)\</td', s, re.S|re.U) ['ООО "Рога и копытца"']
Офлайн
0
Называется, найди 10 отличий.
Так не работает:
CompanyName=re.search(r'Сокращенное наименование:[\<\>\/\stabled]*([А-я\s-\"]*)', full)
CompanyName=re.search(r'Сокращенное наименование[\:\<\/tabled\>\s]*([А-я\s\"]*)', full)
Отредактировано Kir@ (Май 6, 2016 04:47:44)
Офлайн
857
Kir@Разберись с квадратными скобками в регулярном выражении. Ты их неправильно используешь.
У меня сейчас есть конкретный вопрос: какого таежного органа регуляркой не удается получит данные?
Отредактировано py.user.next (Май 6, 2016 05:33:13)
Офлайн
0
Получил я вот такие строки в переменной:
Иванов Иван Иваныч
18 000
50
Иванова Анна Ивановна
18 000
50
Иванов Иван Иваныч, 50%. Иванова Анна Ивановна, 50%.
Офлайн