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

用于 float 或整数的 Python 正则表达式,但不将 float 拆分为两个 float

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 09:01:16 35 4
mua khóa gpt4 Nike

Tôi đang cố trích xuất dữ liệu từ một tệp có thể là int hoặc float. Tôi tìm thấy biểu thức chính quy này sẽ lấy tập tin (\d+(\.\d+)?) để trích xuất cả hai loại, nhưng vấn đề tôi gặp phải là nó chia float thành hai.

>>> nhập lại
>>> line = "(gr_line (bắt đầu 218.948 126.111) (kết thúc 218.948 143.637) (góc 90) (lớp Edge.Cuts) (chiều rộng 0,1) (tstamp 53D2B530))"
>>>
>>> print re.findall(r'\(start (\d+(\.\d+)?) (\d+(\.\d+)?)\)', dòng)
[('218.948', '.948', '126.111', '.111')]
>>>

Điều này làm là lấy tọa độ bắt đầu được xác định bởi (bắt đầu nn), nhưng như bạn có thể thấy, nó chia 218,948 thành 218.948.948. 126.111 Có cùng một vấn đề.

Nếu chuỗi đầu vào có int trong dấu ngoặc bắt đầu, tôi nhận được thông tin sau:

>>> line = "(gr_line (bắt đầu 218.948 126) (kết thúc 218.948 143.637) (góc 90) (lớp Edge.Cuts) (chiều rộng 0,1) (tstamp 53D2B530))"
>>> print re.findall(r'\(start (\d+(\.\d+)?) (\d+(\.\d+)?)\)', dòng)
[('218.948', '.948', '126', '')]
>>>

Vấn đề ở đây là chỉ mục trống được thêm vào - không phải là vấn đề lớn nhưng hơi bất tiện.

Làm cách nào để định dạng biểu thức chính quy của tôi để nó bắt được một số float và trả về số float đó hoặc nó bắt một số nguyên và trả về số nguyên đó.

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

bạn đang sử dụng (\d+(\.\d+)?)

Bắt và lưu hai nhóm

Hãy thử điều này:

(\d+(?:\.\d+)?)

Điều này sẽ chỉ lưu toàn bộ nhóm float.

Về các biểu thức chính quy của Python cho số float hoặc số nguyên, nhưng không chia một float thành hai float, 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/25170209/

35 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