Hướng dẫn how to read multiple xml files from a folder in python - cách đọc nhiều tệp xml từ một thư mục trong python

Mã Python dưới đây hoạt động cho một XML. Vấn đề xảy ra khi tôi cố gắng mở và phân tích nhiều tệp XML, có cấu trúc tương tự và được lưu trong thư mục [dòng 4 -> data = open ['[0-9] .xml', "rb"]. Tôi đang thử các biểu thức thường xuyên, nhưng tôi không chắc điều đó có hoạt động để đặt tên tài liệu không.

Tên của tất cả các tài liệu là "11111.xml, 222222.xml, 33333.xml ...", v.v."11111.xml, 22222.xml, 33333.xml ..." and so on.

import xml.etree.ElementTree as ET
import re

data = open ['[0-9].xml',"rb"]
tree = ET.parse [data]
lst_jugador = tree.findall['data_panel/players/player']
for jugador in lst_jugador:
    print [jugador.find['name'].text, jugador.get["id"]]

stovfl

14,5K7 Huy hiệu vàng22 Huy hiệu bạc49 Huy hiệu đồng7 gold badges22 silver badges49 bronze badges

Hỏi ngày 22 tháng 8 năm 2017 lúc 15:33Aug 22, 2017 at 15:33

Bạn có thể sử dụng mô -đun glob.

import glob
import xml.etree.ElementTree as ET

filenames = glob.glob["[0-9].xml"]  # change the pattern to match your case

for filename in filenames:

    with open[filename, 'r', encoding="utf-8"] as content:

        tree = ET.parse[content]

        lst_jugador = tree.findall['data_panel/players/player']

        for jugador in lst_jugador:

            print [jugador.find['name'].text, jugador.get["id"]]

Đã trả lời ngày 22 tháng 8 năm 2017 lúc 15:42Aug 22, 2017 at 15:42

Stamaimerstamaimanstamaimer

5.9555 Huy hiệu vàng31 Huy hiệu bạc52 Huy hiệu Đồng5 gold badges31 silver badges52 bronze badges

1

Nếu tất cả các tệp của bạn trong một thư mục cần được phân tích cú pháp, bạn chỉ có thể sử dụng os.listdir[]

from os import listdir
for file in listdir[]:
  #if you have to be more selective inside your directory
  #just add a conditional to skip here
  with open[file, "rb"]:
    tree = ET.parse[data]
    lst_jugador = tree.findall['data_panel/players/player']
    for jugador in lst_jugador:
        print [jugador.find['name'].text, jugador.get["id"]]

Đã trả lời ngày 22 tháng 8 năm 2017 lúc 15:40Aug 22, 2017 at 15:40

TonytonyTony

1.2781 Huy hiệu vàng13 Huy hiệu bạc36 Huy hiệu đồng1 gold badge13 silver badges36 bronze badges

2

Tôi đang cố gắng phân tích nhiều tệp XML trong một thư mục và trả lại dữ liệu được phân tích cú pháp vào bảng điều khiển Python. Khi tôi đưa chúng vào bảng điều khiển, tôi có thể xuất chúng dưới dạng CSV và phân tích dữ liệu của tôi ở đó. Kịch bản của tôi sẽ chạy chỉ với một tệp, nhưng khi tôi sử dụng GLOB để phân tích toàn bộ thư mục của các tệp, hàm phân tích cú pháp xml.etree cung cấp cho tôi ngoại lệ này. Tôi đã sử dụng Glob vì tên tệp XML của tôi không đẹp. Tôi đã sử dụng hàm dấu thời gian và có rất nhiều, rất nhiều trong số chúng.

Mã: //pastebin.com/8irzg5td

Tệp "Parsecta.py", dòng 35, trong tệp parse1 [] "Parsecta.py", dòng 16, trong parse1 cta = et.parse [files] file "/l Library /python2.7/xml/etree/elementtree.py ", dòng 1182, trong parse tree.parse [nguồn, phân tích cú pháp] tệp" /l Library/frameworks/python.framework/versions Etree/ElementTree.py ", dòng 647, trong phân tích phân tích = mở [nguồn," rb "]

TypeError: ép buộc Unicode: Cần chuỗi hoặc bộ đệm, danh sách tìm thấy

Tôi có đúng rằng Parse sẽ không chấp nhận danh sách các tệp không? Làm thế nào tôi nên có được xung quanh điều này hoặc làm lại kịch bản của tôi?

Ngoài ra, thư mục các tệp XML của tôi đều được định dạng như thế này dưới đây. Vì vậy, sẽ có thông tin lặp đi lặp lại trong mỗi tài liệu XML [ID, OP's, v.v.] - Tôi không chắc liệu điều này có ảnh hưởng đến chức năng phân tích cú pháp trên nhiều tệp hay không.

            
		6881  
		63
		41.77981533474392
		-87.64655821058486
		52566  
		8526239
		06
		376            	
	

	
		6876  
		47
		41.786399841308594
		-87.73844146728516
		52778  
        	
	

TL: DR - phân tích nhiều tệp XML trong thư mục đến bảng điều khiển Python và xuất chúng dưới dạng CSV. Sử dụng Glob và XML.etree

Cảm ơn bạn Pythonistas.

Làm cách nào để đọc tệp XML từ một thư mục 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 [thông tin chung]. Sau đó chuyển tên tệp của tệp XML cho ElementTree. Phương thức Parse [], để cho phép phân tích tệp XML của chúng tôi. Sau đó, nhận được gốc [thẻ cha] của tệp XML của chúng tôi bằng GetRoot [].

Làm thế nào để phân tích tệp XML trong Python?

Để phân tích tài liệu XML, bạn cần có toàn bộ tài liệu trong bộ nhớ ...
Để phân tích tài liệu XML ..
Nhập xml.dom.minidom ..
Sử dụng chức năng parse parse để phân tích cú pháp tài liệu [doc = xml.dom.minidom.parse [tên tệp] ;.
Gọi danh sách các thẻ XML từ tài liệu XML bằng mã [= doc.getelementsByTagName [tên tên của thẻ XML thẻ].

XML Etree ElementTree trong Python là gì?

Mô -đun xml.etree.elementtree thực hiện API đơn giản và hiệu quả để phân tích và tạo dữ liệu XML.Thay đổi trong phiên bản 3.3: Mô -đun này sẽ sử dụng triển khai nhanh bất cứ khi nào có sẵn.implements a simple and efficient API for parsing and creating XML data. Changed in version 3.3: This module will use a fast implementation whenever available.

Phân tích XML với Python là gì?

Các mô -đun phân tích cú pháp Python XML Python cho phép phân tích các tài liệu XML này bằng hai mô -đun là XML.Etree.Mô -đun ElementTree và Minidom [triển khai DOM tối thiểu].Phân tích cú pháp có nghĩa là đọc thông tin từ một tệp và chia nó thành các phần bằng cách xác định các phần của tệp XML cụ thể đó.to read information from a file and split it into pieces by identifying parts of that particular XML file.

Bài Viết Liên Quan

Chủ Đề