Regex để xóa tất cả các thẻ html Python

Đưa ra một chuỗi str chứa một số thẻ HTML, nhiệm vụ là xóa tất cả các thẻ có trong chuỗi str đã cho

ví dụ

Input: str = "
Geeks for Geeks
"  Output: Geeks for Geeks
Input: str = "GFG" 
Output: GFG 

Khuyến khích. Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp

Tiếp cận.  

Ý tưởng là sử dụng Biểu thức chính quy để giải quyết vấn đề này. Các bước sau đây có thể được thực hiện để tính toán chuỗi kết quả.   

Nhận toàn quyền truy cập vào Sách dạy nấu ăn biểu thức chính quy và hơn 60 nghìn đầu sách khác, với bản dùng thử miễn phí 10 ngày của O'Reilly

Ngoài ra còn có các sự kiện trực tuyến trực tiếp, nội dung tương tác, tài liệu chuẩn bị chứng nhận, v.v.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu và áp dụng một số phương pháp để xóa các thẻ HTML khỏi chuỗi. Chúng tôi sẽ sử dụng biểu thức chính quy, BeautifulSoup và cây phần tử XML

Vì các thẻ HTML luôn chứa ký hiệu <>. Chúng tôi sẽ nhập mô-đun

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
0 tích hợp (biểu thức chính quy) và sử dụng phương thức
#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
1 để tìm kiếm mẫu đã xác định trong chuỗi đầu vào

Ở đây, mẫu

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
2 có nghĩa là không hoặc nhiều ký tự bên trong thẻ <> và khớp với càng ít ký tự càng tốt

Phương thức

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
4 được sử dụng để thay thế các lần xuất hiện của một chuỗi bằng một chuỗi khác. Ở đây, nó sẽ thay thế các lần xuất hiện được tìm thấy bằng một chuỗi rỗng

Mã ví dụ

#Python 3.x
import re
string='Delftstack'
print('String before cleaning:', string)
to_clean = re.compile('<.*?>')
cleantext = re.sub(to_clean, '', string)
print('String after cleaning:', cleantext)

đầu ra

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack

BeautifulSoup là một thư viện Python để lấy dữ liệu từ HTML và XML. Nó sử dụng một trình phân tích cú pháp để phân tích cú pháp HTML và XML;

Chúng ta cần cài đặt cả hai trước khi tiếp tục, sử dụng các lệnh sau

#Python 3.x
pip install beautifulsoup4

#Python 3.x
pip install lxml

Chúng tôi đã nhập mô-đun BeautifulSoup và phân tích cú pháp chuỗi HTML đã cho trong đoạn mã sau. Chúng tôi đã truy cập văn bản từ HTML bằng thuộc tính

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
8

Mã ví dụ

#Python 3.x
from bs4 import BeautifulSoup
string='Delftstack'
print('String after cleaning:', string)
cleantext = BeautifulSoup(string, "lxml").text
print('String after cleaning:', cleantext)

đầu ra

#Python 3.x
String after cleaning: Delftstack
String after cleaning: Delftstack

ElementTree là một thư viện phân tích cú pháp và điều hướng thông qua XML. Phương thức

#Python 3.x
String before cleaning: Delftstack
String after cleaning: Delftstack
9 phân tích cú pháp XML trực tiếp từ một chuỗi thành một phần tử, là phần tử gốc của cây phân tích cú pháp

#Python 3.x
pip install beautifulsoup4
0 tạo ra một trình lặp văn bản lặp qua phần tử này và tất cả các phần tử con của nó theo thứ tự tài liệu, trả về tất cả văn bản bên trong. Bằng cách hợp nhất tất cả các thành phần (văn bản bên trong) của một iterable (chuỗi đầu vào), được phân tách bằng dấu tách chuỗi, phương thức
#Python 3.x
pip install beautifulsoup4
1 trả về một chuỗi không có thẻ HTML

Trong khi thu thập dữ liệu, chúng ta thường cần xử lý văn bản bằng các thẻ HTML. Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để xóa thẻ HTML khỏi chuỗi trong python

Xóa các thẻ HTML khỏi chuỗi trong python bằng Biểu thức chính quy

Biểu thức chính quy là một trong những cách tốt nhất để xử lý dữ liệu văn bản. Chúng tôi cũng có thể xóa các thẻ HTML khỏi chuỗi trong python bằng các biểu thức chính quy. Đối với điều này, chúng ta có thể sử dụng phương pháp sub() được xác định trong mô-đun regex

Phương thức sub() lấy mẫu của chuỗi con cần được thay thế làm đối số đầu tiên của nó, chuỗi sẽ được thay thế ở vị trí của chuỗi con được thay thế làm đối số đầu vào thứ hai và chuỗi gốc làm đầu vào thứ ba

Sau khi thực hiện, nó trả về chuỗi đã sửa đổi bằng cách thay thế tất cả các lần xuất hiện của chuỗi con được cung cấp làm đối số đầu vào đầu tiên bằng chuỗi con được cung cấp làm đối số đầu vào thứ hai trong chuỗi gốc

Để xóa các thẻ HTML khỏi chuỗi trong python bằng phương pháp sub(), trước tiên chúng tôi sẽ xác định một mẫu đại diện cho tất cả các thẻ HTML. Đối với điều này, chúng tôi sẽ tạo một mẫu đọc tất cả các ký tự bên trong thẻ HTML <>. Mô hình như sau

1

2

3

 

mẫu = '

 

Sau khi tạo mẫu, chúng ta sẽ thay thế mỗi chuỗi con có mẫu đã xác định bằng một chuỗi rỗng "" bằng cách sử dụng phương thức sub(). Bằng cách này, chúng tôi có thể xóa các thẻ HTML khỏi bất kỳ chuỗi đã cho nào trong Python

Sau đây là mã nguồn để xóa các thẻ HTML khỏi chuỗi trong python bằng phương thức sub().  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

nhập lại

 

mẫu = '

myString = """

<đầu>

Java2Blog

Tôi là một câu bên trong chuỗi HTML.

Tôi chỉ là một câu khác được viết bởi Aditya.

"""

in("Chuỗi HTML là. ")

in(myString)

chuỗi đầu ra = lại. phụ(mẫu, ", myString)

print("Chuỗi đầu ra là. ")

in(chuỗi đầu ra)

 

đầu ra

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

 

Chuỗi HTML String .

<. DOCTYPE html>

<html>

<đầu>

<tiêu đề>Java2Blog</title>

< / đầu>

<nội dung>

<h1>I am a sentence inside an HTML string.< / h1>

<p>Tôi am just another sentence written by Aditya.< / p>

< / body>

< / html>

Đầu ra Chuỗi .

 

 

 

Java2Blog

 

 

Tôi tôi a câu bên trong an HTML string.

Tôi chỉ là một câu khác written by Aditya.

 

 

 

 

đọc thêm

Xóa Url khỏi văn bản trong Python

Đọc thêm →

Nhận HTML từ URL trong Python

Đọc thêm →

Xóa các thẻ HTML khỏi chuỗi trong python bằng Mô-đun lxml

Thay vì sử dụng các biểu thức chính quy, chúng ta cũng có thể sử dụng mô-đun lxml để xóa các thẻ HTML khỏi chuỗi trong python. Đối với điều này, trước tiên chúng ta sẽ phân tích chuỗi gốc bằng phương thức fromstring()

Phương thức fromstring() lấy chuỗi gốc làm đầu vào và trả về trình phân tích cú pháp. Sau khi nhận được trình phân tích cú pháp, chúng tôi có thể trích xuất văn bản bằng phương pháp regex0, để lại các thẻ HTML. Phương thức regex0 trả về một đối tượng có kiểu dữ liệu regex2. Vì vậy, chúng ta cần chuyển đổi đầu ra thành chuỗi bằng cách sử dụng hàm regex3

Bạn có thể quan sát điều này trong ví dụ sau

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

từ lxml. html nhập từ chuỗi

 

mẫu = '

myString = """

<đầu>

Java2Blog

Tôi là một câu bên trong chuỗi HTML.

Tôi chỉ là một câu khác được viết bởi Aditya.

"""

in("Chuỗi HTML là. ")

in(myString)

parserObj = từchuỗi(myString)

outputString = str(parserObj.text_content())

print("Chuỗi đầu ra là. ")

in(chuỗi đầu ra)

 

đầu ra

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

Chuỗi HTML String .

<. DOCTYPE html>

<html>

<đầu>

<tiêu đề>Java2Blog</title>

< / đầu>

<nội dung>

<h1>I am a sentence inside an HTML string.< / h1>

<p>Tôi am just another sentence written by Aditya.< / p>

< / body>

< / html>

Đầu ra Chuỗi .

 

 

Java2Blog

 

 

Tôi tôi a câu bên trong an HTML string.

Tôi chỉ là một câu khác written by Aditya.

 

 

 

 

Xóa các thẻ HTML khỏi chuỗi trong python bằng Mô-đun Beautifulsoup

Giống như module regex4, module regex5 cũng cung cấp cho chúng ta nhiều hàm để xử lý dữ liệu văn bản. Để xóa các thẻ HTML khỏi chuỗi bằng mô-đun BeautifulSoup, chúng ta có thể sử dụng phương thức regex6 và phương thức regex7

Theo cách tiếp cận này, trước tiên chúng ta sẽ tạo một trình phân tích cú pháp để phân tích cú pháp chuỗi chứa các thẻ HTML bằng cách sử dụng phương thức regex6. Phương thức regex6 lấy chuỗi gốc làm đối số đầu vào đầu tiên và loại trình phân tích cú pháp được tạo làm đối số đầu vào thứ hai, đây là tùy chọn. Sau khi thực hiện, nó trả về trình phân tích cú pháp. Chúng ta có thể gọi phương thức regex7 trên trình phân tích cú pháp để lấy chuỗi đầu ra.  

Chương trình sau đây trình bày cách xóa các thẻ HTML khỏi chuỗi trong python bằng mô-đun regex5

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

 

nhập bs4

 

mẫu = '

myString = """

<đầu>

Java2Blog

Tôi là một câu bên trong chuỗi HTML.

Tôi chỉ là một câu khác được viết bởi Aditya.

"""

in("Chuỗi HTML là. ")

in(myString)

parserObj = bs4. BeautifulSoup(myString)

outputString = parserObj. get_text()

print("Chuỗi đầu ra là. ")

in(chuỗi đầu ra)

 

đầu ra

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

Chuỗi HTML String .

<. DOCTYPE html>

<html>

<đầu>

<tiêu đề>Java2Blog</title>

< / đầu>

<nội dung>

<h1>I am a sentence inside an HTML string.< / h1>

<p>Tôi am just another sentence written by Aditya.< / p>

< / body>

< / html>

Đầu ra Chuỗi .

 

 

Java2Blog

 

 

Tôi tôi a câu bên trong an HTML string.

Tôi chỉ là một câu khác written by Aditya.

 

 

 

 

Phần kết luận

Trong bài viết này, chúng tôi đã thảo luận về các cách khác nhau để xóa thẻ HTML khỏi chuỗi trong python. Trong khi các cách tiếp cận với mô-đun lxml và các mô-đun BeautifulSoup tạo một trình phân tích cú pháp để trích xuất văn bản từ chuỗi HTML, thì cách tiếp cận sử dụng các biểu thức chính quy tập trung hoàn toàn vào việc loại bỏ các thẻ HTML. Mặc dù kết quả đầu ra giống nhau nhưng đây là điểm khác biệt cơ bản giữa các phương pháp này. Bạn có thể sử dụng bất kỳ phương pháp nào tùy theo sự thuận tiện của bạn

Làm cách nào để xóa tất cả các thẻ HTML khỏi chuỗi trong Python?

Cái lại. Phương thức sub() sẽ xóa tất cả các thẻ HTML trong chuỗi bằng cách thay thế chúng bằng chuỗi rỗng. Đã sao chép.

Làm cách nào để xóa thẻ HTML khỏi chuỗi regex?

Dưới đây là biểu thức chính quy đơn giản để xác thực chuỗi theo mẫu thẻ HTML. Điều này sau này có thể được sử dụng để xóa tất cả các thẻ và chỉ để lại văn bản. / Thử đi.

Làm cách nào để xóa thẻ HTML khỏi tệp CSV bằng Python?

Cách sử dụng .
Đặt tệp trong cùng thư mục với tệp csv
open terminal at the file location windows : ctrl + r then cmd then cd .
Kiểu. python remove_html. py và nhấn enter
Làm theo chỉ dẫn
Bạn xong việc rồi

Làm cách nào để xóa thẻ HTML bằng BeautifulSoup?

Cách tiếp cận. .
Nhập thư viện bs4
Tạo tài liệu HTML
Phân tích nội dung thành một đối tượng BeautifulSoup
Lặp lại dữ liệu để xóa các thẻ khỏi tài liệu bằng phương thức phân hủy ()
Sử dụng phương thức striped_strings() để lấy nội dung thẻ
In dữ liệu được trích xuất