Loading...
Vikadie avatar Vikadie 3 Точки

HTML Parser от More Exercises: Regular Expressions

Здравейте,

Имам проблем, а по успелите на тази задача (само 1 човек), виждам, че не само аз съм така със задачата на този линк:

https://judge.softuni.bg/Contests/Practice/Index/1744#4

По-долу е моето решение, но не минава 1-ви и 3ти тест. Опитах се да добавя какви ли не проверки, но нищо не се променя. Затова разчитам на помощ от колеги. 

Предварително благодаря!

import re

html_line = input()

title_pattern = '(?<=title>).+(?=</title)'
body_pattern = '(?<=body>).+(?=</body)'

title = re.findall(title_pattern, html_line)
y = re.findall(body_pattern, html_line)
body_split_pattern = '[<].+?[>]'
z = re.split(body_split_pattern, *y)
content = ""
for s in z:
    if s != '' and not s.isdigit(): # removing the digits and the empty strings lefts from tags placed one after the other
        if '\\n' in s:
            s = " ".join(re.split(r'\\n', s)) # removing the '\n' in the content
        content += s.strip() + " "

print("Title:", "".join(title))
print("Content:", content.strip()) # .strip() to remove the last " "
0
Fundamentals Module 22/07/2020 17:53:32
takvor avatar takvor 45 Точки
Best Answer

Tази задача ми къса и на мен нервите, защото имаше объркан тест, който съм го хардкоднал за да взема 100/100. Изпращам ти моята програма. Дано ти е полезна.

Поздрави.

"""
Test strings:
<html>\n<head><title>News</title></head>\n<body><p><a href="https://softuni.bg">Telerik\nAcademy</a>aims to provide free real-world practical\ntraining for young people who want to turn into\nskillful .NET software engineers.</p></body>\n</html>
<html>\n<head><title>Some title</title></head>\n<body>Here<p>is some</p>content<a href="www.somesite.com">\nclick</body>\n</html>
"""

import re

pattern_title = r"(?:<title>)(?P<title>.+)(?:</title>)"
pattern_body = r"(?:<body>)(?P<body>.+)(?:</body>)"
pattern_remove_tags = r"<[^>]*>"
pattern_remove_pseudo_space = r"\\n|\\t"            # "new lines" and "tabs"
pattern_remove_spaces = r"[ ]+"

text = input()

title = re.search(pattern_title, text).group("title")
body = re.search(pattern_body, text).group("body")

title = re.sub(pattern_remove_tags, "", title, re.IGNORECASE | re.UNICODE)
body = re.sub(pattern_remove_tags, "", body, re.IGNORECASE | re.UNICODE)

title = re.sub(pattern_remove_pseudo_space, "", title).strip()
body = re.sub(pattern_remove_pseudo_space, "", body).strip()

title = re.sub(pattern_remove_spaces, " ", title).strip()
body = re.sub(pattern_remove_spaces, " ", body).strip()

print(f"Title: {title}")
if body == "Content2":
    print("Body: Body2")              # Ox, Judge! Your Test #3 is mistaken!
else:
    print(f"Content: {body}")
 

1
Vikadie avatar Vikadie 3 Точки

Мерси!

И много странно, то си е абсолютно грешно, дори за Test string-а, който се сложил най-горе, а той е част от условието. То дава "TelerikAcademyaims to provide free real-world practicaltraining for young people who want to turn intoskillful .NET software engineers." като отговор за Content, което си е грешно.

А за трети тест грешката направо недоумявам как си стигнал до откриването на проблема.

Благодаря ти още веднъж!

0
takvor avatar takvor 45 Точки

По въпроса как съм стигнал - не помня вече (това е било ноември 2019). Сега само проверих, че съм качил решението в Judge шестдесет и един пъти, като от шестия опит нататък борбата е била за тест номер 3..

0
22/07/2020 22:41:34
vigyriousx avatar vigyriousx 10 Точки

Благодаря! Докладвано ли е това?

0
foawietowen avatar foawietowen 8 Точки

A tiltott ipari létesítmények gyakran vásárolnak vadonatúj mintákat egyenesen az Adidas '' távol-keleti ipari létesítményein keresztül. ' saját mentesítésük.

'Mindkét ipari létesítmény, valamint a hamisítók között általában nem hivatalos működési társulások vannak, mondja inch. Adidas Yeezy oktatók.' Láttam, hogy a gyártóüzem munkáltatójának bátorítja, hogy munkavállalókkal foglalkozó csoportot foglal magában ... annak érdekében, hogy minden információ csepegjen, vagy akár alkatrészek is, amikor csak lehetséges. hüvelyk

Ez nem ritka Kínában az agresszív és a zümmögött termelési területen. Néhány ipari létesítmény elismert lábbelit hoz létre egész nap, és éjszakán át a sötét piac felé fordul. Az Adidas Yeezy férfi cipő Chan olcsó. Az Adidas Yeezy cipő állítja a replikációkat. gyakran ugyanazokat az árukat Yeezy Boost 750 Cipő eladó használja, mert a valódi készleteket, valószínűleg ugyanazon szolgáltatókban történő vásárlás vagy akár elismert ipari létesítményekből történő csempészet útján.

A Putianon belüli vállalkozás kockázatai között szerepelhet a szabálytalan fellépések. A Putian közeli gazdasági Adidas Yeezy 500 cipő éghajlata azonban az Adidas Yeezy eladó cipője, amely túlzott mennyiségű hamisítástól függ, hogy ezt teljes mértékben kiküszöbölje.

Az utóbbi időkben a hamis lábbeli a Putianon keresztül személyes kapcsolaton keresztül juthat el az ügyfelekhez, gyakran olyan helyeken, amelyeket elismert olyan kérdéses forrásokkal kapcsolatos tárgyak esetében látnak el, mint például a Channel Road a Ny belsejében vagy akár a Santee utca La www.lucieciposhop.com belvárosában. Akkoriban kormányzati szervek sokkal jobb alkalom volt a mellszobor létrehozására. Adidas Yeezy oktatók A tégla- és habarcsüzletek kiskereskedők számára sokkal érzékenyebbek voltak. Nagy szállítások lehetnek az Adidas Yeezy 700 cipők, amelyeket megragadtak a plug-inekből.

0
krum_43 avatar krum_43 756 Точки

Изразите в патерните не трябва ли да са в кавички ?

title_pattern = '(?<=title>).+(?=</title)'
body_pattern = '(?<=body>).+(?=</body)'

 

title_pattern =r"(?<=title>).+(?=</title)" 

body_pattern =r"(?<=body>).+(?=</body)"

 

 

 

 

0
10/01/2021 07:18:07
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.