cuốn sách gpt4 ai đã làm

java — Phân tích cú pháp XML, bắt đầu mục tiêu tìm kiếm đánh dấu và bỏ qua bất cứ điều gì ở trên nó 标记

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 14:44:08 27 4
mua khóa gpt4 Nike

Tôi đang phân tích cú pháp tệp XML thành khung dữ liệu gấu trúc. Sử dụng mã bên dưới, tôi có thể lấy thành công mọi thứ, nhưng mã này sử dụng phiên bản đã chỉnh sửa của XML đầy đủ. XML đầy đủ Có một loạt dữ liệu tóm tắt ở đầu bảng dữ liệu chính, xem Full XML đây . Dòng tôi cần để bắt đầu giải nén là dòng 641 trong XML.

Ví dụ XML:




### khoảng 300 dòng tạo kiểu ###




Kết quả CPET



Toán tử





Dữ liệu bệnh nhân



Dữ liệu quản trị


ID
B013


Tiêu đề



Họ
Dữ liệu


### Bỏ qua vài trăm dòng ###


Biến
Đơn vị
Nghỉ ngơi
Khởi động
AT
AT % tối đa
RCP
RCP % tối đa
V'O2peak
Giá trị tối đa tuyệt đối


V'O2
L/phút
0,34
-
1,83
76
2,28
94
2,42
2,59

### Bỏ qua vài dòng nữa ###

Borg

-
-
-
-
-
-
-
-



###### CẦN BẮT ĐẦU CHIẾT XUẤT TỪ HÀNG NÀY ######

t
Pha
Điểm đánh dấu
V'O2
V'CO2
V'E
V'E/V'O2
V'E/V'CO2
HR
RER
V'O2/kg
PetO2
PetCO2
ExCO2
BF
WR
Borg

### Tệp XML tiếp tục giống nhau từ đây với cùng cấu trúc ###

Mã hiện tại của tôi:

từ etree nhập lxml
nhập gấu trúc dưới dạng pd

với open('cortex.xml', 'r') dưới dạng infile:
root = etree.parse(infile)

không gian tên = {'o': 'urn:schemas-microsoft-com:office:office',
'x': 'urn:schemas-microsoft-com:office:excel',
'ss': 'urn:schemas-microsoft-com:office:bảng tính'}

dữ liệu = []

ws = root.xpath('/ss:Workbook/ss:Worksheet', namespaces=namespaces)
nếu len(ws) > 0:
bảng = ws[0].xpath('./ss:Table', namespaces=namespaces)
nếu len(bảng) > 0:
hàng = bảng [0].xpath('./ss:Row', namespaces=namespaces)
cho hàng trong hàng:
nhiệt độ = []
ô = row.xpath('./ss:Cell/ss:Data', namespaces=namespaces)
cho các ô trong ô:
temp.append(cell.text)
dữ liệu.append(temp)

df = pd.DataFrame(data[2:], columns=data[0])

Làm cách nào để chỉnh sửa mã hiện tại để chỉ trích xuất Dữ liệu tương ứng với các thẻ trong bảng dữ liệu chính? Lượng dữ liệu tóm tắt ở trên cùng có thể khác nhau, do đó, việc mã hóa điểm bắt đầu không phải là một lựa chọn.

<ô>lúc đầuCác thuộc tính dữ liệu chính là StyleID="Đo lườngDataTableHead" , có thể tìm kiếm dựa trên điều này và bắt đầu giải nén từ đó không? Tôi hoàn toàn bối rối trước câu hỏi này.

câu trả lời hay nhất

Nếu bảng phân tích luôn là bảng cuối cùng, bạn có thể tạo giá trị bool phụ nếu giá trị t (giá trị đầu tiên của bảng được phân tích cú pháp) được đặt thành ĐÚNG VẬY và nối nó:

từ etree nhập lxml
nhập gấu trúc dưới dạng pd

với open('cortex_full.xml', 'r') dưới dạng infile:
root = etree.parse(infile)

không gian tên = {'o': 'urn:schemas-microsoft-com:office:office',
'x': 'urn:schemas-microsoft-com:office:excel',
'ss': 'urn:schemas-microsoft-com:office:bảng tính'}

dữ liệu = []
phân tích = Sai
ws = root.xpath('/ss:Workbook/ss:Worksheet', namespaces=namespaces)
nếu len(ws) > 0:
bảng = ws[0].xpath('./ss:Table', namespaces=namespaces)
nếu len(bảng) > 0:
hàng = bảng [0].xpath('./ss:Row', namespaces=namespaces)
cho hàng trong hàng:
nhiệt độ = []
ô = row.xpath('./ss:Cell/ss:Data', namespaces=namespaces)
cho các ô trong ô:
nếu cell.text == 't':
phân tích = Đúng
nếu phân tích:
temp.append(cell.text)
nếu phân tích:
dữ liệu.append(temp)
df = pd.DataFrame(data[2:], columns=data[0])
in(df.head())

t Điểm đánh dấu pha V'O2 V'CO2 \
0 0:00:10 Còn lại Không có 0,251524741119069 0,236014510176694
1 0:00:20 Nghỉ ngơi Không có 0,434384403499744 0,411231246288168
2 0:00:30 Nghỉ ngơi Không có 0,343945761508378 0,341020990667946
3 0:00:40 Nghỉ ngơi Không có 0,220729503668137 0,196421701276079
4 0:00:50 Nghỉ ngơi Không có 0,257787497144625 0,217026849651075

V'E V'E/V'O2 V'E/V'CO2 HR RER \
0 11.89836 36.3356700392092 38.7235513323219 0 0 0.938335167851211
1 15.59965 31.7517155056147 33.5394017952007 0 0 0.946698921450597
2 14.8086111111111 36.8447951082032 37.1607949595411 0 0.991496418424796
3 9.04168333333334 29.5090743425324 33.1609149651866 0 0 0.889875154938032
4 9.99203333333333 28.3149237809555 33.6328585383268 0 0.841882760238438

V'O2/kg PetO2 PetCO2 ExCO2 \
0 4.42046996694321 115.479326671601 28.7635623488774 -0.0145537951547244
1 7.63417229349286 111.689054293116 33.3331430668641 -0.0219190689603747
2 6.04474097554267 117.675559264742 29.9207171560161 -0.00289989981300173
3 3.87925314003756 115.526557480056 28.6691007319681 -0.0216309094198363
4 4.53053597793717 109.339321572498 32.0697189407024 -0.0343156864209755

BF WR Borg
0 19.16 0 Không có
1 12,55 0 Không có
2 14.8333333333333 0 Không có
3 17.5566666666667 0 Không có
4 18,7 0 Không có

Về python - phân tích cú pháp XML, tìm kiếm thẻ bắt đầu mục tiêu và bỏ qua tất cả các thẻ phía trên nó, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/46388261/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress