Làm cách nào để lưu tệp xml trong python?

Tìm hiểu cách bạn có thể phân tích cú pháp, khám phá, sửa đổi và điền các tệp XML bằng gói Python ElementTree, cho các vòng lặp và biểu thức XPath. Là một nhà khoa học dữ liệu, bạn sẽ thấy rằng việc hiểu XML là rất hữu ích cho cả việc quét web và thực tiễn chung trong việc phân tích cú pháp một tài liệu có cấu trúc

Extensible Markup Language [XML] là ngôn ngữ đánh dấu mã hóa tài liệu bằng cách xác định một bộ quy tắc ở cả định dạng máy đọc được và con người đọc được. Được mở rộng từ SGML [Ngôn ngữ đánh dấu tổng quát hóa tiêu chuẩn], nó cho phép chúng tôi mô tả cấu trúc của tài liệu. Trong XML, chúng ta có thể định nghĩa các thẻ tùy chỉnh. Chúng ta cũng có thể sử dụng XML làm định dạng chuẩn để trao đổi thông tin

  • Tài liệu XML có các phần, được gọi là phần tử, được xác định bởi thẻ bắt đầu và thẻ kết thúc. Thẻ là một cấu trúc đánh dấu bắt đầu bằng
    tree = ET.parse['movies.xml']
    root = tree.getroot[]
    3 và kết thúc bằng
    tree = ET.parse['movies.xml']
    root = tree.getroot[]
    4. Các ký tự giữa thẻ bắt đầu và thẻ kết thúc, nếu có, là nội dung của phần tử. Các phần tử có thể chứa đánh dấu, bao gồm các phần tử khác, được gọi là "phần tử con"
  • Phần tử cấp cao nhất, lớn nhất được gọi là gốc, chứa tất cả các phần tử khác
  • Thuộc tính là cặp giá trị tên tồn tại trong thẻ bắt đầu hoặc thẻ phần tử trống. Một thuộc tính XML chỉ có thể có một giá trị duy nhất và mỗi thuộc tính có thể xuất hiện nhiều nhất một lần trên mỗi phần tử

Đây là ảnh chụp nhanh của

tree = ET.parse['movies.xml']
root = tree.getroot[]
5 mà chúng tôi sẽ sử dụng cho hướng dẫn này






DVD
1981
PG

'Archaeologist and adventurer Indiana Jones
is hired by the U.S. government to find the Ark of the Covenant before the Nazis.'



DVD,Online
1984
PG
None provided.


Blu-ray
1985
PG
Marty McFly




dvd, digital
2000
PG-13
Two mutants come to a private academy for their kind whose resident superhero team must oppose a terrorist organization with similar powers.


VHS
1992
PG13
NA.


Online
1992
R
WhAtEvER I Want!!!?!







DVD
1979
R
"""""""""




DVD
1986
PG13
Funny movie on funny guy


blue-ray
2000
Unrated
psychopathic Bateman


Giới thiệu về ElementTree

Cấu trúc cây XML làm cho việc điều hướng, sửa đổi và loại bỏ tương đối đơn giản về mặt lập trình. Python có một thư viện tích hợp, ElementTree, có chức năng đọc và thao tác XML [và các tệp có cấu trúc tương tự khác]

Đầu tiên, nhập

tree = ET.parse['movies.xml']
root = tree.getroot[]
6. Đó là một thông lệ phổ biến để sử dụng bí danh của
tree = ET.parse['movies.xml']
root = tree.getroot[]
7

import xml.etree.ElementTree as ET

Phân tích dữ liệu XML

Trong tệp XML được cung cấp, có một bộ sưu tập phim cơ bản được mô tả. Vấn đề duy nhất là dữ liệu là một mớ hỗn độn. Đã có rất nhiều người quản lý khác nhau của bộ sưu tập này và mọi người đều có cách nhập dữ liệu vào tệp của riêng mình. Mục tiêu chính trong hướng dẫn này là đọc và hiểu tệp bằng Python — sau đó khắc phục sự cố

Trước tiên, bạn cần đọc trong tệp có

tree = ET.parse['movies.xml']
root = tree.getroot[]
6

tree = ET.parse['movies.xml']
root = tree.getroot[]

Bây giờ bạn đã khởi tạo cây, bạn nên xem XML và in ra các giá trị để hiểu cây được cấu trúc như thế nào

root.tag'collection'

Ở cấp cao nhất, bạn thấy rằng XML này bắt nguồn từ thẻ

tree = ET.parse['movies.xml']
root = tree.getroot[]
9

tree = ET.parse['movies.xml']
root = tree.getroot[]
1

Đối với vòng lặp

Bạn có thể dễ dàng lặp lại các phần tử con [thường được gọi là "con"] trong thư mục gốc bằng cách sử dụng vòng lặp "for" đơn giản

tree = ET.parse['movies.xml']
root = tree.getroot[]
2

Bây giờ bạn biết rằng con cái của gốc

tree = ET.parse['movies.xml']
root = tree.getroot[]
9 đều là
root.tag'collection'
1. Để chỉ định thể loại, XML sử dụng thuộc tính
root.tag'collection'
2. Có các phim Hành động, Kinh dị và Hài theo yếu tố
root.tag'collection'
1

Thông thường sẽ rất hữu ích khi biết tất cả các phần tử trong toàn bộ cây. Một chức năng hữu ích để làm điều đó là

root.tag'collection'
4

tree = ET.parse['movies.xml']
root = tree.getroot[]
8

Có một cách hữu ích để xem toàn bộ tài liệu. Nếu bạn chuyển gốc vào phương thức

root.tag'collection'
5, bạn có thể trả về toàn bộ tài liệu. Trong ElementTree, phương thức này có dạng hơi lạ

Vì ElementTree là một thư viện mạnh mẽ có thể diễn giải nhiều hơn chỉ XML, nên bạn phải chỉ định cả mã hóa và giải mã tài liệu mà bạn đang hiển thị dưới dạng chuỗi

Bạn có thể mở rộng việc sử dụng hàm

root.tag'collection'
6 để giúp tìm các yếu tố quan tâm cụ thể.
root.tag'collection'
4 sẽ liệt kê tất cả các phần tử con dưới gốc khớp với phần tử được chỉ định. Tại đây, bạn sẽ liệt kê tất cả các thuộc tính của phần tử
root.tag'collection'
8 trong cây

tree = ET.parse['movies.xml']
root = tree.getroot[]
3

Biểu thức XPath

Nhiều khi các phần tử sẽ không có thuộc tính, chúng sẽ chỉ có nội dung văn bản. Sử dụng thuộc tính

root.tag'collection'
9, bạn có thể in ra nội dung này

Bây giờ, in ra tất cả các mô tả của phim

tree = ET.parse['movies.xml']
root = tree.getroot[]
5

In ra XML rất hữu ích, nhưng XPath là ngôn ngữ truy vấn được sử dụng để tìm kiếm thông qua XML một cách nhanh chóng và dễ dàng. Tuy nhiên, việc hiểu XPath là cực kỳ quan trọng để quét và điền XML.

tree = ET.parse['movies.xml']
root = tree.getroot[]
6 có hàm
tree = ET.parse['movies.xml']
root = tree.getroot[]
11 sẽ duyệt qua các phần tử con trực tiếp của phần tử được tham chiếu

Tại đây, bạn sẽ tìm kiếm trên cây những bộ phim ra mắt năm 1992

tree = ET.parse['movies.xml']
root = tree.getroot[]
8

Hàm

tree = ET.parse['movies.xml']
root = tree.getroot[]
11 luôn bắt đầu tại phần tử được chỉ định. Loại chức năng này cực kỳ mạnh mẽ để "tìm và thay thế". Bạn thậm chí có thể tìm kiếm trên các thuộc tính

Bây giờ, chỉ in ra những phim có sẵn ở nhiều định dạng [một thuộc tính]

import xml.etree.ElementTree as ET
0

Suy nghĩ xem tại sao, trong trường hợp này, câu lệnh in trả về giá trị “Có” của

tree = ET.parse['movies.xml']
root = tree.getroot[]
13. Hãy suy nghĩ về cách xác định vòng lặp "for"

Mẹo. sử dụng

tree = ET.parse['movies.xml']
root = tree.getroot[]
14 bên trong XPath để trả về phần tử cha của phần tử hiện tại

import xml.etree.ElementTree as ET
1

Sửa đổi một XML

Trước đó, tiêu đề phim là một mớ hỗn độn tuyệt đối. Bây giờ, in chúng ra một lần nữa

tree = ET.parse['movies.xml']
root = tree.getroot[]
3

Sửa lỗi '2' trong Back 2 the Future. Đó phải là một vấn đề tìm và thay thế. Viết mã để tìm tiêu đề ‘Back 2 the Future’ và lưu nó dưới dạng một biến

import xml.etree.ElementTree as ET
3

Lưu ý rằng việc sử dụng phương thức

tree = ET.parse['movies.xml']
root = tree.getroot[]
15 trả về một phần tử của cây. Phần lớn thời gian, sẽ hữu ích hơn khi chỉnh sửa nội dung trong một phần tử

Sửa đổi thuộc tính

tree = ET.parse['movies.xml']
root = tree.getroot[]
16 của biến phần tử Back 2 the Future thành "Back to the Future". Sau đó, in ra các thuộc tính của biến của bạn để xem sự thay đổi của bạn. Bạn có thể dễ dàng làm điều này bằng cách truy cập vào thuộc tính của một phần tử và sau đó gán một giá trị mới cho nó

import xml.etree.ElementTree as ET
4

Ghi lại các thay đổi của bạn vào XML để chúng được cố định vĩnh viễn trong tài liệu. In lại các thuộc tính phim của bạn để đảm bảo các thay đổi của bạn hoạt động. Sử dụng phương pháp

tree = ET.parse['movies.xml']
root = tree.getroot[]
17 để làm điều này

import xml.etree.ElementTree as ET
5

Sửa thuộc tính

Thuộc tính

tree = ET.parse['movies.xml']
root = tree.getroot[]
13 không chính xác ở một số chỗ. Sử dụng
tree = ET.parse['movies.xml']
root = tree.getroot[]
6 để sửa bộ chỉ định dựa trên số lượng định dạng của phim. Đầu tiên, in thuộc tính và văn bản của ________ 120 để xem phần nào cần sửa

import xml.etree.ElementTree as ET
6

Có một số công việc cần phải được thực hiện trên thẻ này

Bạn có thể sử dụng biểu thức chính quy để tìm dấu phẩy — điều này sẽ cho biết thuộc tính

tree = ET.parse['movies.xml']
root = tree.getroot[]
13 nên là "Có" hay "Không". Thêm và sửa đổi các thuộc tính có thể được thực hiện dễ dàng với phương thức
tree = ET.parse['movies.xml']
root = tree.getroot[]
22

import xml.etree.ElementTree as ET
7

yếu tố di chuyển

Một số dữ liệu đã được đặt sai thập kỷ. Sử dụng những gì bạn đã học về XML và

tree = ET.parse['movies.xml']
root = tree.getroot[]
6 để tìm và sửa các lỗi dữ liệu trong thập kỷ

Sẽ rất hữu ích khi in cả thẻ

tree = ET.parse['movies.xml']
root = tree.getroot[]
24 và thẻ
tree = ET.parse['movies.xml']
root = tree.getroot[]
25 trong toàn bộ tài liệu

import xml.etree.ElementTree as ET
8

Hai năm nhầm thập kỷ là những bộ phim từ những năm 2000. Chỉ ra những bộ phim đó là gì, sử dụng biểu thức XPath

import xml.etree.ElementTree as ET
9

Bạn phải thêm thẻ thập kỷ mới, thập niên 2000, vào thể loại Hành động để di chuyển dữ liệu X-Men. Phương pháp

tree = ET.parse['movies.xml']
root = tree.getroot[]
26 có thể được sử dụng để thêm thẻ này vào cuối XML

tree = ET.parse['movies.xml']
root = tree.getroot[]
0

Bây giờ hãy nối phim X-Men với những năm 2000 và loại bỏ nó khỏi những năm 1990, lần lượt sử dụng

tree = ET.parse['movies.xml']
root = tree.getroot[]
27 và
tree = ET.parse['movies.xml']
root = tree.getroot[]
28

tree = ET.parse['movies.xml']
root = tree.getroot[]
1

Xây dựng tài liệu XML

Tốt, vì vậy về cơ bản bạn đã có thể chuyển toàn bộ một bộ phim sang một thập kỷ mới. Lưu các thay đổi của bạn trở lại XML

tree = ET.parse['movies.xml']
root = tree.getroot[]
2Kết luận

ElementTree là một thư viện Python quan trọng cho phép bạn phân tích cú pháp và điều hướng một tài liệu XML. Sử dụng ElementTree chia nhỏ tài liệu XML theo cấu trúc cây dễ làm việc với. Khi nghi ngờ, hãy in nó ra [

tree = ET.parse['movies.xml']
root = tree.getroot[]
29] - sử dụng câu lệnh in hữu ích này để xem toàn bộ tài liệu XML cùng một lúc

Làm cách nào để lưu đầu ra XML vào Tệp trong Python?

Người viết phải có phương thức write[] khớp với phương thức của giao diện đối tượng tệp . Tham số thụt lề là thụt lề của nút hiện tại. Tham số addindent là thụt đầu dòng gia tăng để sử dụng cho các nút con của nút hiện tại. Tham số newl chỉ định chuỗi sẽ sử dụng để chấm dứt dòng mới.

Làm cách nào để chạy Tệp XML trong Python?

Để đọc một tệp XML bằng ElementTree, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện xml, dưới tên ET [quy ước chung]. Sau đó chuyển tên tệp của tệp xml tới ElementTree. parse[], để cho phép phân tích cú pháp tệp xml của chúng tôi. Sau đó, lấy gốc [thẻ cha] của tệp xml của chúng tôi bằng getroot[]

Làm cách nào để tạo Tệp XML từ Tệp văn bản trong Python?

Các bước chuyển đổi TXT sang XML thông qua Python .
Tải tệp TXT với phiên bản Sổ làm việc
Gọi sổ làm việc. phương thức lưu
Truyền đường dẫn đầu ra với phần mở rộng XML làm tham số
Kiểm tra đường dẫn được chỉ định cho tệp XML kết quả

Bạn có thể sử dụng XML với Python không?

XML là viết tắt của eXtensible Markup Language. Nó được thiết kế để lưu trữ và vận chuyển lượng dữ liệu vừa và nhỏ và được sử dụng rộng rãi để chia sẻ thông tin có cấu trúc. Python cho phép bạn phân tích cú pháp và sửa đổi các tài liệu XML . Để phân tích cú pháp tài liệu XML, bạn cần có toàn bộ tài liệu XML trong bộ nhớ.

Chủ Đề