ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมแบ่งสตริงที่กำหนดเป็นส่วนเท่าๆ กัน ลองดูตัวอย่าง
อินพุท
string = 'Tutorialspoint' each_part_length = 5
เอาต์พุท
Tutor ialsp ointX
อินพุท
string = 'Tutorialspoint' each_part_length = 6
เอาต์พุท
Tutori alspoi ntXXXX
เราจะใช้เมธอด zip_longest จากโมดูล itertools เพื่อบรรลุผลลัพธ์
เมธอด zip_longest รับ iterators เป็นอาร์กิวเมนต์ สามารถส่ง fillvalue สำหรับการแบ่งสตริง จะคืนค่า list of tuples ที่มีตัวอักษรจำนวนเท่ากัน
zip_longest คืนค่า tuple ในแต่ละรอบจนกว่า iterator ที่ยาวที่สุดจะหมด แต่ละ tuple มีตัวอักษรตามความยาวที่กำหนด
ตัวอย่าง
# นำเข้า itertools
import itertools
# เริ่มต้นสตริงและความยาว
string = 'Tutorialspoint'
each_part_length = 5
# เก็บ n iterators สำหรับความต้องการ
iterator = [iter(string)] * each_part_length
# ใช้ zip_longest แบ่ง
result = list(itertools.zip_longest(*iterator, fillvalue='X'))
# แปลง list of tuples เป็น string และพิมพ์
print(' '.join([''.join(item) for item in result]))
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
Tutor ialsp ointX
ตัวอย่าง (ความยาว 6)
# นำเข้า itertools
import itertools
# เริ่มต้นสตริงและความยาว
string = 'Tutorialspoint'
each_part_length = 6
# เก็บ n iterators
iterator = [iter(string)] * each_part_length
# ใช้ zip_longest แบ่ง
result = list(itertools.zip_longest(*iterator, fillvalue='X'))
# แปลงและพิมพ์
print(' '.join([''.join(item) for item in result]))
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
Tutori alspoi ntXXXX
สรุป
ใช้ itertools.zip_longest() แบ่งสตริงเท่าๆ กัน fillvalue สำหรับเติมส่วนที่ไม่ครบ หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น