2017-02-22 18 views
0

Я попытался использовать python для написания скрипта, удалив определенный узорный текст внутри html. Однако мой код, похоже, не работает. Не могли бы вы помочь мне проверить, где пошло не так?Удаление узорного текста из html с использованием python

import os, re 

cwd = os.getcwd() 
print ('Now you are at this directory: \n' + cwd) 

# find files that have an extension with HTML 
Files = os.listdir(cwd) 
print Files 

def func(file): 
    for file in os.listdir(cwd): 
     if file.endswith('.html'): 
      for line in open(file): 
       re.sub(r'<strong>.*?<\/strong>', '', line) 
       # I feel the above line has some problems 
func(file) 

спасибо, что заблаговременно !!

ответ

2

Вам не нужно бежать/в вашем re. \/ фактически просто обычный /. См. Введение the re documentation для полной справки.

Ваше регулярное выражение должно быть: r'<strong>.*?</strong>'

Это, однако, не рекомендуется для разбора HTML с регулярными выражениями. См. BeautifulSoup для этого!

line = '<p>some text, <strong>SOME STRONG TEXT </strong> and again <strong>STONG TEXT</strong></p>' 
re.sub(r'<strong>.*?<\/strong>', '', line) 
#'<p>some text, and again </p>' 
+0

Спасибо Тьерри, я обязательно проверю прекрасное! Для регулярного выражения я пробовал оба шаблона, но ни один из них не работает ... Если вы используете мой оригинальный скрипт и пытаетесь распечатать согласованные тексты, они на самом деле правильны. Я просто не уверен, какая часть ошибочна в коде, который мешает мне заменять согласованные строки ... – Penny

1

Надеюсь, это поможет!

import os, re 

cwd = os.getcwd() 
print ('Now you are at this directory: \n' + cwd) 

# find files that have an extension with HTML 
Files = os.listdir(cwd) 

def func(file): 
    for file in os.listdir(cwd): 
     if file.endswith('.html'): 
       f = open(file, "r+") 
       text = re.sub(r'\<strong\>.*\<\/strong\>',"",f.read()) 
       f.close() 
       f = open(file, "w") 
       f.write(text) 
       f.close() 
func(file) 
+0

Спасибо, что это сработало! В моем случае мне, возможно, придется попробовать еще раз - посмотрите, поможет ли прекрасный суп больше. :) – Penny