Hướng dẫn python re remove html tags - python lại xóa các thẻ html

26

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một chuỗi chứa đánh dấu HTML như liên kết, văn bản in đậm, v.v.

Tôi muốn tước tất cả các thẻ để tôi chỉ có văn bản thô.

Cách tốt nhất để làm điều này là gì? Regex?

Hỏi ngày 3 tháng 8 năm 2010 lúc 17:02Aug 3, 2010 at 17:02

I Want This text!'] 'I Want This text!'

Đã trả lời ngày 3 tháng 8 năm 2010 lúc 17:09Aug 3, 2010 at 17:09

John Howardjohn HowardJohn Howard

57.9K23 Huy hiệu vàng48 Huy hiệu bạc65 Huy hiệu Đồng23 gold badges48 silver badges65 bronze badges

3

Afaik sử dụng Regex là một ý tưởng tồi để phân tích cú pháp HTML, bạn sẽ tốt hơn khi sử dụng trình phân tích cú pháp HTML/XML như Soup xinh đẹp.

Đã trả lời ngày 3 tháng 8 năm 2010 lúc 17:17Aug 3, 2010 at 17:17

6

Sử dụng lxml.html. Nó nhanh hơn nhiều so với văn bản đẹp và thô là một lệnh duy nhất.

>>> import lxml.html
>>> page = lxml.html.document_fromstring['...']
>>> page.cssselect['body'][0].text_content[]
'...'

Đã trả lời ngày 3 tháng 8 năm 2010 lúc 19:57Aug 3, 2010 at 19:57

Tim McNamaratim McNamaraTim McNamara

17.6K4 Huy hiệu vàng51 Huy hiệu bạc82 Huy hiệu Đồng4 gold badges51 silver badges82 bronze badges

3

Sử dụng SGMLParser. regex hoạt động trong trường hợp đơn giản. Nhưng có rất nhiều sự phức tạp với HTML mà bạn không cần phải đối phó.

>>> from sgmllib import SGMLParser
>>>
>>> class TextExtracter[SGMLParser]:
...     def __init__[self]:
...         self.text = []
...         SGMLParser.__init__[self]
...     def handle_data[self, data]:
...         self.text.append[data]
...     def getvalue[self]:
...         return ''.join[ex.text]
...
>>> ex = TextExtracter[]
>>> ex.feed['hello > world']
>>> ex.getvalue[]
'hello > world'

Đã trả lời ngày 3 tháng 8 năm 2010 lúc 17:32Aug 3, 2010 at 17:32

Wai Yip Tungwai Yip TungWai Yip Tung

17.6K10 Huy hiệu vàng42 Huy hiệu bạc46 Huy hiệu đồng10 gold badges42 silver badges46 bronze badges

1

Tùy thuộc vào việc văn bản sẽ chứa '>' hoặc '

def cleanStrings[self, inStr]:
  a = inStr.find['']
  if a < 0 and b < 0:
    return inStr
  return cleanString[inStr[a:b-a]]

Đã trả lời ngày 3 tháng 8 năm 2010 lúc 17:15Aug 3, 2010 at 17:15

Snurresnurresnurre

2.9852 Huy hiệu vàng23 Huy hiệu bạc31 Huy hiệu đồng2 gold badges23 silver badges31 bronze badges

Đầu tuần này, tôi cần xóa một số thẻ HTML khỏi văn bản, chuỗi đích đã được lưu với các thẻ HTML trong cơ sở dữ liệu và một trong những yêu cầu chỉ định rằng trong một trang cụ thể, chúng tôi cần hiển thị nó dưới dạng văn bản thô.

Ngay từ đầu tôi đã biết rằng các biểu thức thông thường có thể áp dụng cho thử thách này, nhưng vì tôi không phải là một chuyên gia với các biểu thức thường xuyên, tôi đã tìm kiếm một số lời khuyên trong Stack Overflow và sau đó tôi tìm thấy những gì tôi thực sự cần.

Dưới đây là chức năng tôi đã xác định:

def remove_html_tags[text]:
"""Remove html tags from a string"""
import re
clean = re.compile['']
return re.sub[clean, '', text]

Vì vậy, ý tưởng là xây dựng một biểu thức thông thường có thể tìm thấy tất cả các ký tự là một tỷ lệ đầu tiên trong một văn bản và sau đó, sử dụng hàm phụ, chúng ta có thể thay thế tất cả các văn bản giữa các ký hiệu đó bằng một chuỗi trống.

Hãy xem điều này trong vỏ:

Hy vọng điều này có thể giúp bạn!

Làm thế nào để bạn xóa các thẻ HTML trong Python?

Sử dụng phương thức re.sub [] để xóa các thẻ HTML khỏi chuỗi, ví dụ: Kết quả = Re. sub [r ' sub[] method to remove the HTML tags from a string, e.g. result = re. sub[r'

Bài Viết Liên Quan

Chủ Đề