Điểm:2

trích xuất tên tệp từ các phần tử href

lá cờ in

Tôi có một tài liệu chứa danh sách các tệp. Cách đơn giản để trích xuất tên tệp bên trong phần tử href (không có dấu ngoặc kép) và sao chép chúng vào danh sách được phân tách bằng dấu ngắt dòng là gì?

<manifest>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="css" href="845214570.css" media-type="text/css"/>
<item id="cover-image" href="845214570.jpg" media-type="image/jpeg"/>
<item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav"/>
<item id="cover" href="cover.xhtml" media-type="application/xhtml+xml"/>
<item id="author" href="author.xhtml" media-type="application/xhtml+xml"/>
<item id="title" href="title.xhtml" media-type="application/xhtml+xml"/>
<item id="copy" href="copy.xhtml" media-type="application/xhtml+xml"/>
<item id="contents" href="contents.xhtml" media-type="application/xhtml+xml"/>
<item id="preface" href="preface.xhtml" media-type="application/xhtml+xml"/>
<item id="ack" href="ack.xhtml" media-type="application/xhtml+xml"/>
<item id="ch1" href="ch1.xhtml" media-type="application/xhtml+xml"/>
<item id="ch2" href="ch2.xhtml" media-type="application/xhtml+xml"/>
<item id="ch3" href="ch3.xhtml" media-type="application/xhtml+xml"/>
<item id="ch4" href="ch4.xhtml" media-type="application/xhtml+xml"/>
<item id="ch5" href="ch5.xhtml" media-type="application/xhtml+xml"/>
<item id="ch6" href="ch6.xhtml" media-type="application/xhtml+xml"/>
<item id="ch7" href="ch7.xhtml" media-type="application/xhtml+xml"/>
<item id="ch8" href="ch8.xhtml" media-type="application/xhtml+xml"/>
<item id="ch9" href="ch9.xhtml" media-type="application/xhtml+xml"/>
<item id="ch10" href="ch10.xhtml" media-type="application/xhtml+xml"/>
<item id="ch11" href="ch11.xhtml" media-type="application/xhtml+xml"/>
<item id="app" href="app.xhtml" media-type="application/xhtml+xml"/>
<item id="appb" href="appb.xhtml" media-type="application/xhtml+xml"/>
<item id="appc" href="appc.xhtml" media-type="application/xhtml+xml"/>
<item id="index" href="index.xhtml" media-type="application/xhtml+xml"/>
<item id="img-f0019-01" href="f0019-01.jpg" media-type="image/jpeg"/>
<item id="img-f0027-01" href="f0027-01.jpg" media-type="image/jpeg"/>
<item id="img-f0029-01" href="f0029-01.jpg" media-type="image/jpeg"/>
</manifest>
Điểm:6
lá cờ in

Đối với tệp XML có định dạng đơn giản này, bạn có thể sử dụng tiếng kêu:

grep -Po 'href="\K[^"]*' file.xml > filenames.lst

Tuy nhiên, nếu bạn có một phức tạp hơn xml, bạn có thể và nên thích một xml trình phân tích cú pháp, ví dụ: xmlstarlet:

xmlstarlet sel -t -v '//item/@href' -n file.xml > filenames.lst

Điều này có thể được cài đặt thông qua

sudo apt cài đặt xmlstarlet

Như bạn đã gắn thẻ câu hỏi của bạn với con trăn, tất nhiên bạn cũng có thể sử dụng nó:

#!/usr/bin/env python3
nhập xml.etree.ElementTree dưới dạng ET
root = ET.parse('file.xml')
cho mục trong root.findall('.//item'):
    in(item.attrib['href'])
minto avatar
lá cờ in
grep hoạt động tốt. Cảm ơn bạn.
minto avatar
lá cờ in
đối với python (tôi có python 2.x), nó hiển thị lỗi `./extract.py ./extract.py:4: FutureWarning: Tìm kiếm này bị hỏng trong phiên bản 1.3 trở về trước và sẽ được sửa trong phiên bản tương lai. Nếu bạn dựa vào hành vi hiện tại, hãy đổi nó thành './/item' đối với mục trong root.findall('//item'):` Tôi đã thay đổi, nhưng không có bất kỳ đầu ra nào được in.
pLumo avatar
lá cờ in
Tôi đã thay đổi nó để tương thích với phiên bản cũ hơn của python.
lá cờ hr
Một tùy chọn khác mà tôi phát hiện ra gần đây là `xq` từ [yq suite](https://github.com/kislyuk/yq) cho phép truy vấn dạng JSON trên các tài liệu xml cũ. `xq -r '.manifest.item[] | "@href"' file.xml`
bac0n avatar
lá cờ cn
...hoặc `hxselect -s \n -c 'item::attr(href)'

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.