แยกอักขระสตริงโดยไม่มีฟังก์ชัน python [ซ้ำกัน]

Dec 02 2020

คุณสามารถแยก "+ 2x-5y + 8 + 2y" (ไม่มีช่องว่างระหว่างอักขระ) เช่น [+ 2x, -5y, + 8, + 2y] ใน python ได้หรือไม่ อย่างไร?

คำตอบ

schetefan24 Dec 02 2020 at 22:34

หากคุณทราบรูปแบบของอินพุตสำหรับทั้งหมดที่อาจเข้ามาให้ดูที่นิพจน์ทั่วไป

ในกรณีของคุณวิธีแก้ปัญหาอาจเป็นเช่น

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

re.findall(expression, input)ต้องการนิพจน์ทั่วไปและอาร์กิวเมนต์ซึ่งจะถูกแยกวิเคราะห์ในโซลูชันข้างต้นรูปแบบ[+-]\d[xy]?ประกอบด้วย

  • [+-] ทั้ง a + หรือ a - สัญลักษณ์
  • \dตัวเลขใดก็ได้หากคุณคาดว่าจะมีหลายหลักให้ใช้\d+แทน (+ หมายถึงที่นี่ "การซ้ำอย่างน้อยหนึ่งครั้ง")
  • [xy]?หนึ่งในอักขระ x และ y แต่อาจขาดหายไป หากคุณคาดหวังว่าจะมีตัวอักษรอื่นด้วยให้เพิ่มไว้ในวงเล็บเหล่านี้