Pad / Strip Leading Zeros
pad_or_strip_zeros · text · text
2026-09-23
กำลังประมวลผล…
pad_or_strip_zeros · text · text
2026-09-23
รหัสไปรษณีย์ 01000 และเบอร์โทร 0812345678 จะเสียหายทันทีที่ถูกมองเป็นตัวเลข เพราะศูนย์นำหน้าหายไป เทคนิคนี้เติมศูนย์กลับให้ครบความยาวที่ควรเป็น หรือถอดศูนย์นำหน้าออกเมื่อระบบปลายทางไม่ต้องการ
+ หรือ - นำหน้าได้pad เติมศูนย์ด้านซ้ายจนครบ length ส่วน strip ลบศูนย์นำหน้าออกโดยเหลืออย่างน้อยหนึ่งหลัก| Parameter | Type | Default |
|---|---|---|
columns | string[] | — |
mode | pad | strip | "pad" |
length | number | 3 |
import json
import re
def pad_or_strip_zeros(value, mode='pad', length=5):
if not isinstance(value, str) or not re.fullmatch(r'[+-]?\d+', value):
return value
sign = value[0] if value[0] in '+-' else ''
digits = value[1:] if sign else value
if mode == 'pad':
return sign + digits.rjust(length, '0')
return sign + re.sub(r'^0+(?=\d)', '', digits)
values = ['1000', '01000', '+7', 'ไทย', None, 1000]
result = {
'pad': [pad_or_strip_zeros(v, 'pad', 5) for v in values],
'strip': [pad_or_strip_zeros(v, 'strip', 5) for v in values],
}
print(json.dumps(result, ensure_ascii=False))
คอลัมน์ zipcode มีทั้ง 10240 และ 1000 ซึ่งอันหลังคือ 01000 ที่ศูนย์หายไปตอนเปิดด้วย Excel ตั้งโหมด pad ความยาว 5 แล้วตรวจ Preview ว่ามีกี่ค่าที่ถูกเติม ถ้าจำนวนตรงกับจำนวนรหัสที่ขึ้นต้นด้วยศูนย์ในจังหวัดที่คาดไว้ ก็เพิ่มเข้า Pipeline ได้ จากนั้นใช้ validate_regex ตรวจว่าทุกค่าเป็นตัวเลขห้าหลักจริง
ใช้ detect_type เพื่อยืนยันว่าคอลัมน์ควรเป็น text ไม่ใช่ตัวเลข ใช้ convert_type เมื่อจงใจให้เป็นตัวเลข และใช้ validate_regex เพื่อตรวจความยาวหลังเติมศูนย์