Форум сайта python.su
0
Есть строчка "<!– find rare characters in the mess below: –>
<!–
%%$@_$^__#)^)&!_+]!*@&^}@v()%+$&!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{([*}@+!!*{)!}{%+{))])a#{*+^((@^@}$[**$&^{$!@#$%)!@(&
–>"
Стоит задача выбрать из этой сточки только буквы (буквы выделил, чтобы их было видно). Помогите, пожалуйста, а то уже могз кипит.
Офлайн
568
s = '''<!– %%$@_$^__#)^)&!_+]!*@&^}@v()%+$&!&_#)_*}{}}!}_]$[%}@[{_@#_^{* @##&{#&{&)*%(]{{([*}@+!!*{)!}{%+{))])a#{*+^((@^@}$[**$&^{$!@#$%)!@(& –>''' print re.findall("[a-z]", s)
Офлайн
0
А как быть, если мне нужно вытащить эти строчки с исходного кода страницы? Т.е. исходные символы будут известны после запроса страницы и находиться между символами <!–-строчка_с_буквами-–>"
Офлайн
2
пример исходного кода страницы?
Офлайн
0
<html>
<head>
<title>111</title>
<link rel=“stylesheet” type=“text/css” href=“../style.css”>
</head>
<body>
<br>
<br>
<br>
<font size=“-1” color=“gold”>
General tips:
</body>
</html>
<!–- find rare characters in the mess below: -–>
<!–-
%%$@_$^__#)^)&!_+]!*@&^}@v()%+$&!&_#)_*}{}}!}_]$[%}@[{_@#_^{*
@##&{#&{&)*%(]{{()a#{*+^((@^@}$[**$&^{$!@#$%)!@(&
-–>"
Отредактировано Moi5es (Окт. 15, 2014 14:38:12)
Офлайн
857
Нужно выделить сначала тот фрагмент, в котором собрался искать.
Отредактировано py.user.next (Окт. 16, 2014 09:17:42)
Офлайн
0
Вот мой итоговый скрипт:
import urllib.request, re url = urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html") ocr = url.read().decode('utf-8') pattern1 = '''<!--\D*(?!find rare characters in the mess below:)-->''' scan1 = re.search(pattern1, ocr) result1 = scan1.group() #print (scan1.group()) pattern2 = '[a-zA-Z]' scan2 = re.findall(pattern2, result1) print (scan2)
Офлайн
857
Moi5esПохоже, нужно взять все комментарии, из полученного списка убрать ненужные, а потом в оставшихся искать то, что надо.
Вот мой итоговый скрипт:
Офлайн
0
А просто исключить строчку из списка не получится, типа это надо
<!–-
%%$@_$^__#
<!–- find rare characters in the mess below: -–>
Отредактировано Moi5es (Окт. 16, 2014 10:10:59)
Офлайн
857
Moi5esВ питоне несколько действий можно записать в одном выражении. Главное, не забыть включить нужные действия.
Думал, всю операцию можно проделать в одно действие
>>> import re >>> >>> text = """ ... <html> ... <head> ... <title>111</title> ... <link rel="stylesheet" type="text/css" href="../style.css"> ... </head> ... <body> ... ... <br> ... <br> ... <br> ... ... <font size="-1" color="gold"> ... General tips: ... </body> ... </html> ... ... <!-- find rare characters in the mess below: --> ... ... <!-- ... %%$@_$^__#)^)&!_+]!*@&^}@v()%+$&!&_#)_*}{}}!}_]$[%}@[{_@#_^{* ... @##&{#&{&)*%(]{{()a#{*+^((@^@}$[**$&^{$!@#$%)!@(& ... --> ... """ >>> >>> lst = re.findall(r'<!--.*?-->', text, re.S)[1:] >>> out = re.findall(r'[a-zA-Z]', ''.join(lst)) >>> out ['v', 'a'] >>>
Офлайн