Data Processing
ประมวลผลข้อมูล
ข้อมูลที่อ่านมามักต้องแยก ค้น หรือจัดลำดับ เข้าใจโครงสร้างก่อนใช้รูปแบบค้นที่ซับซ้อน
หัวข้อในบทนี้
ศัพท์ในบทนี้ · กดคำที่ขีดเส้นใต้ในเนื้อหาเพื่อดูความหมายได้ด้วย
- IP
- ที่อยู่และโปรโตคอลส่ง packet ระหว่างเครือข่าย รุ่น IPv4 และ IPv6 มีรูปแบบต่างกัน
- CSV
- รูปแบบข้อมูลตารางข้อความที่มีกฎ delimiter และ quote
แปลงข้อความเป็นข้อมูลก่อนใช้กฎ
String เป็นลำดับอักขระ List เป็นลำดับรายการ Index ใน Python เริ่มที่ 0 ส่วน slice ใช้ขอบเริ่มรวมและขอบจบไม่รวม Algorithm เป็นขั้นตอนแก้ปัญหา Regex เป็นภาษาของรูปแบบข้อความ ทั้งหมดต้องทำงานกับ input ที่นิยามไว้ ไม่เดารูปแบบจากบรรทัดที่เห็นครั้งเดียว
- Raw string
เช่น 'Ann,failed' ยังเป็นข้อความรวม ต้องรู้ delimiter และการ escape
- Parse
แยกเป็น fields หรืออ่านด้วย parser ที่ตรงรูปแบบ ไม่ split CSV อย่างเดียวเมื่อมี quotes และ comma ในค่า
- Select
ใช้ index หรือ slice เลือกส่วน เช่น [0:3] เลือกตำแหน่ง 0 1 2
- Match
Regex หา pattern ต้องแยก search match และ fullmatch พร้อมขอบเขตที่ต้องการ
- Transform
ปรับข้อมูลตาม algorithm แล้วตรวจว่าไม่ทำรายการหายหรือซ้ำโดยผิดเจตนา
start=1 รวม · stop=4 ไม่รวม
Index ติดลบอ้างจากท้ายตามกติกา และ slice เลยขอบมีพฤติกรรมต่างจากการอ่าน index เดี่ยวที่ไม่มีตำแหน่ง ตัวอย่างเริ่มจากขอบพื้นฐานก่อนใช้ step
Regex [0-9]+ พบตัวเลขต่อเนื่องไม่ได้ยืนยันว่าเป็น ที่ถูกต้องทั้งค่า และการลบสมาชิก list ระหว่างวนอาจข้ามบางรายการ String เปลี่ยนค่าในตำแหน่งเดิมไม่ได้แบบ list จึงสร้างข้อความใหม่ ส่วนชื่อหลายชื่อที่อ้าง list เดียวกันอาจเห็นการเปลี่ยนร่วมกัน
ข้อความและลิสต์Strings and Lists · 13.3.1
String เก็บข้อความ List เก็บลำดับรายการและปรับรายการได้
String เป็นข้อความที่แก้ในที่เดิมไม่ได้ List เป็นลำดับรายการที่แก้ได้ Methods มีผลต่างกัน บางตัวคืนค่าใหม่บางตัวแก้ object เดิม เช่น str.lower() คืนข้อความใหม่ ส่วน list.append() เพิ่มใน list
ข้อความและการคืนค่าใหม่
ลำดับรายการที่เปลี่ยนได้
คืนค่าใหม่หรือแก้ object
split แยกข้อความตาม delimiter แต่ ที่มี comma ใน quote ควรใช้ parser CSV ไม่ split แบบเดา การแก้ list ที่อ้างร่วมจากหลายชื่ออาจมีผลกับผู้ใช้ object เดียวกัน
import csv
from io import StringIO
rows = csv.reader(StringIO('name,note\nAlice,"IT, Support"'))
for row in rows:
print(row)csv reader เก็บ IT, Support เป็นหนึ่ง field เพราะมี quote หากใช้ split comma ตรงๆ จะได้จำนวน field ผิด
ที่มาของหัวข้อนี้ · 2 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 3: Work with strings and listsVideo: String operationsCY7.M3.V2
- Automate Cybersecurity Tasks with Python · Module 3: Work with strings and listsVideo: List operations in PythonCY7.M3.V4
ตำแหน่งและการตัดช่วงIndexing and Slicing · 13.3.2
Index อ้างตำแหน่ง Slice เลือกช่วง ต้องระวังจุดเริ่มและจุดสิ้นสุด
Index เริ่มจากศูนย์ใน Python Negative index นับจากท้าย Slice [start:stop:step] เก็บถึงก่อน stop ช่วงที่ไม่ระบุใช้ค่าเริ่มต้นตามทิศทาง step
ตำแหน่งรายการเดียว
ช่วงก่อน stop
ขอบเขตที่ข้อมูลมีจริง
items[1:3] เลือกตำแหน่งหนึ่งและสอง ไม่ใช่สาม items[-1] อ่านท้ายแต่ list ว่างเกิด error ระบุขอบเขตที่ต้องการและตรวจความยาวเมื่อข้อมูลอาจไม่ครบ
items = ["A", "B", "C", "D"]
print(items[0])
print(items[1:3])
print(items[-1])ผลคือ A จาก index 0 แล้ว [B, C] จาก slice ที่หยุดก่อน index 3 และ D จากตำแหน่งสุดท้าย
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 3: Work with strings and listsVideo: String indices and slicesCY7.M3.V3
ขั้นตอนวิธีAlgorithms · 13.3.3
Algorithm เป็นขั้นตอนแก้ปัญหา ต้องพิจารณาความถูกต้องและต้นทุนเมื่อข้อมูลเพิ่ม
Algorithm เป็นขั้นตอนแก้ปัญหาจาก input ไป output เลือกโครงสร้างข้อมูลให้เข้ากับงาน เช่น set สำหรับสมาชิกไม่ซ้ำ dict สำหรับค้นจาก key ประสิทธิภาพขึ้นกับจำนวนข้อมูลและวิธีทำ
ข้อมูลและเงื่อนไขตั้งต้น
ขั้นตอนและโครงสร้างที่เลือก
ผลตามกฎที่ต้องการ
หาผู้ใช้ที่อนุญาตจาก list ซ้ำทุก event อาจทำงานมากกว่าการแปลง allowlist เป็น set แล้วตรวจสมาชิก ต้องรักษาความหมาย เช่น set ไม่เก็บรายการซ้ำที่อาจมีความหมายต่อการนับ
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 3: Work with strings and listsVideo: Write a simple algorithmCY7.M3.V5
รูปแบบค้นหาข้อความRegular Expressions · 13.3.4
Regex อธิบายรูปแบบข้อความที่ต้องการหา ไม่ใช่เครื่องมือแทน parser ทุกชนิด
Regex เป็น pattern จับรูปแบบข้อความ Literal ตรงตัว character class เลือกตัวอักษร quantifier ระบุจำนวน anchor ระบุขอบ เช่น ^ ต้นและ $ ท้าย การ match ไม่เท่ากับตรวจความหมายของข้อมูลครบ
รูปแบบอักขระที่ต้องการ
ส่วนข้อความที่พบ
ตรวจความหมายหลังจับรูปแบบ
pattern ที่จับเลขกับจุดอาจยอมรับ 999.999.999.999 ต้องใช้ตัวตรวจ IP เพิ่ม Regex บางแบบมีต้นทุนสูงกับ input แปลก จึงจำกัดขนาด input และใช้ parser เฉพาะชนิดเมื่อเหมาะ
Pattern Matching versus Validation (พบรูปแบบ กับรับรองข้อมูล)
Regex [0-9]+ หาเลขต่อเนื่องได้ แต่ไม่ได้ยืนยันว่าเป็นจำนวนที่อยู่ในขอบเขตงาน ส่วนรูปแบบคล้าย IPv4 ที่ยอมรับเลขสามหลักทุกชุดอาจยอมรับ 999.999.999.999 ซึ่งไม่ใช่ octets ที่ถูกต้อง ต้องตรวจ semantics เพิ่มด้วย parser หรือกฎที่เหมาะ
Search หาจุดที่ match ในข้อความ ส่วน fullmatch ต้องครอบคลุมทั้งข้อความตามวิธี Python Raw string ช่วยเขียน backslashes ของ pattern แต่ไม่ได้ทำให้ input ปลอดภัยโดยอัตโนมัติ Regex ที่ซับซ้อนกับ input ยาวอาจมีต้นทุนสูง ต้องเลือก pattern และขอบเขตข้อมูลตามงาน
import re
text = "device=PC-12 status=failed"
match = re.search(r"device=(PC-\d+)", text)
if match:
print(match.group(1))ผลเป็น PC-12 วงเล็บสร้างกลุ่ม d แบบ escape จับ digit และ + ให้หนึ่งตัวขึ้นไป หากชื่ออุปกรณ์มีรูปแบบอื่น pattern นี้จะไม่พบ ต้องกำหนดรูปแบบตามข้อมูลจริง
ที่มาของหัวข้อนี้ · 1 รายการ
คำอธิบายและภาพในหน้านี้เรียบเรียงใหม่ ชื่อบทต้นทางด้านล่างใช้ตรวจที่มา ไม่ได้แทนเนื้อหาที่คุณต้องไปอ่านเพิ่มเพื่อเข้าใจหน้านี้ และไม่ยืนยันว่าทุกประโยคมีอยู่ในคอร์ส
- Automate Cybersecurity Tasks with Python · Module 3: Work with strings and listsVideo: Regular expressions in PythonCY7.M3.V6
นำศัพท์มาเชื่อมกับงาน
แยกข้อความ log เป็นรายการ แล้วค่อยหา IP หรือสถานะตามรูปแบบที่กำหนด
สิ่งที่บทนี้เชื่อมไว้
ข้อมูลที่อ่านมามักต้องแยก ค้น หรือจัดลำดับ เข้าใจโครงสร้างก่อนใช้รูปแบบค้นที่ซับซ้อน
ใช้ภาพกับตัวอย่างด้านบนเชื่อมหน้าที่ของแต่ละส่วน แล้วตรวจความเข้าใจด้วยการอธิบายเหตุผลของผลที่เห็น ก่อนเปิดบทถัดไป
บทเรียนที่เกี่ยวข้องและที่มาของบทอ่าน
transcript ที่เคยใช้ตรวจแนวคิดพื้นฐานและตัวอย่างบางส่วน: T0071 · Automate Cybersecurity Tasks with Python คำอธิบายเป็นการเขียนใหม่ ไม่ใช่การแปลครบทุกประโยค ภาพและตัวอย่างเป็นการเรียบเรียงเพื่อเชื่อมความเข้าใจ
คำอธิบายหน้านี้เขียนใหม่ตามหัวข้อใน Atlas รายการด้านล่างเป็นชื่อ Video/Reading ที่เคยจับคู่ไว้ แสดงไว้ให้ตรวจที่มาของชื่อหัวข้อ และไม่รับรองว่าคอร์สสอนทุกส่วนของคำอธิบายนี้