Giá trị dict[1] sẽ thay đổi linh hoạt, vì vậy tôi cần thay đổi linh hoạt giá trị thuộc tính của Tác giả trong python. Tôi điều này có thể?
con trăn
0 0
Đăng lại
Đã chỉnh sửa 8 năm trước bởi racigan vì. bỏ lỡ một dòng mã
- 2 Người đóng góp
- 1 Trả lời
- 3K Lượt xem
- 1 ngày Khoảng thời gian thảo luận
- Bài đăng mới nhất 8 năm trước Bài đăng mới nhất của chriswelborn
chriswelborn 63 . Tôi không thực sự sử dụng mô-đun import xml.etree.ElementTree as ET
0 và sẽ thực sự hữu ích nếu bạn có thể định dạng mã của mình. Nhưng đây là những gì tôi tìm thấy
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']
3 và kết thúc bằng
root = tree.getroot[]tree = ET.parse['movies.xml']
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"
root = tree.getroot[] - 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ề ElementTreeCấ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[]
7import 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[]
6tree = 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[]
9tree = 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[]
2Bâ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[]
8Có 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[]
3Biể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[]
5In 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ếuTạ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[]
8Hà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ínhBâ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
0Suy 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ạiimport xml.etree.ElementTree as ET
1Sử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[]
3Sử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
3Lư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
4Ghi 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àyimport xml.etree.ElementTree as ET
5Sử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ửaimport xml.etree.ElementTree as ET
6Có 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[]
22import xml.etree.ElementTree as ET
7yế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ệuimport xml.etree.ElementTree as ET
8Hai 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
9Bạ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 XMLtree = ET.parse['movies.xml']
root = tree.getroot[]
0Bây giờ nối phim X-Men vào 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[]
28tree = ET.parse['movies.xml']
root = tree.getroot[]
1Xâ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ậnElementTree 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