Hướng dẫn try except alternative python - thử ngoại trừ con trăn thay thế

Tôi khá mới đối với Python, vì vậy tôi đã tự hỏi liệu có một sự thay thế ngắn gọn hơn để chạy hàng tấn khối try/except liên tiếp như có thể thấy dưới đây không?

try:
    project_type = body.find_element_by_xpath['./div[contains[@class, "discoverableCard-type"]]'].text
except Exception:
    project_type = 'Error'
try:
    title = body.find_element_by_xpath['./div[contains[@class, "discoverableCard-title"]]'].text
except Exception:
    title = 'Error'
try:
    description = body.find_element_by_xpath['./div[contains[@class, "discoverableCard-description"]]'].text
except Exception:
    description = 'Error'
try:
    category = body.find_element_by_xpath['./div[contains[@class, "discoverableCard-category"]]'].text
except Exception:
    category = 'Error'
...

Như đã được đề xuất trong chuỗi này hoặc chủ đề này, tôi đoán tôi có thể tạo danh sách các tên và truy vấn biến, sau đó sử dụng vòng lặp for để xây dựng từ điển cho mỗi mục container, nhưng thực sự không có lựa chọn thay thế nào khác có lẽ dễ đọc hơn?

Đã hỏi ngày 27 tháng 6 năm 2018 lúc 23:52Jun 27, 2018 at 23:52

Oldboyoldboyoldboy

5.3345 Huy hiệu vàng29 Huy hiệu bạc75 Huy hiệu Đồng5 gold badges29 silver badges75 bronze badges

Lý do mà mã của bạn có rất nhiều sự lộn xộn là vì bạn có mã trùng lặp. Bạn đang thể hiện cùng một ý tưởng [tìm kiếm một giá trị, đặt mặc định nếu nó thất bại] bốn lần liên tiếp, điều đó có nghĩa là bạn sẽ phải viết cùng một mã hỗ trợ bốn lần.

Các vòng lặp là một cách tuyệt vời để sửa mã trùng lặp - vì vậy sử dụng danh sách các tên để tra cứu và tạo từ điển giá trị là giải pháp hoàn hảo cho bạn ở đây. Điều này cho phép bạn viết logic một lần và sau đó sử dụng nó nhiều lần.

[Ngoài ra: Sao chép mã của bạn đã dẫn đến một lỗi!

Đã trả lời ngày 28 tháng 6 năm 2018 lúc 0:03Jun 28, 2018 at 0:03

3

Bạn có thể trừu tượng hóa cuộc gọi đến find_element_by_xpath; Điều này tránh sao chép mã và làm cho mã của bạn dễ đọc hơn:

def _find_element_by_xpath[body, xpath]
    try:
        return body.find_element_by_xpath[xpath].text
    except Exception:   # 

Bài Viết Liên Quan

Chủ Đề