Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แบ่งสตริงเป็นส่วนเท่าๆ กัน (grouper) ใน Python

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมแบ่งสตริงที่กำหนดเป็นส่วนเท่าๆ กัน ลองดูตัวอย่าง

อินพุท

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 สำหรับเติมส่วนที่ไม่ครบ หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น