Phân tách ký tự chuỗi không có hàm python [trùng lặp]

Dec 02 2020

Bạn có thể tách "+ 2x-5y + 8 + 2y" này (không có bất kỳ khoảng cách nào giữa các ký tự) như [+ 2x, -5y, + 8, + 2y] trong python không? Làm sao?

Trả lời

schetefan24 Dec 02 2020 at 22:34

nếu bạn biết mẫu đầu vào cho tất cả những gì có thể xuất hiện, hãy xem biểu thức chính quy

Trong trường hợp của bạn, một giải pháp có thể là

import re
a = "+2x-5y+8+2y"
print(re.findall(r"[+-]\d[xy]?", a))

re.findall(expression, input)yêu cầu một biểu thức chính quy và một đối số sẽ được phân tích cú pháp Trong giải pháp trên, mẫu [+-]\d[xy]?bao gồm

  • [+-] ký hiệu + hoặc -
  • \dbất kỳ chữ số nào, nếu bạn muốn sử dụng nhiều chữ số \d+thay thế (+ nghĩa là ở đây "ít nhất một lần lặp lại")
  • [xy]?một trong các ký tự x và y, nhưng nó có thể bị thiếu. Nếu bạn cũng mong đợi các chữ cái khác, hãy thêm chúng vào bên trong dấu ngoặc