วิธีแก้ไข: ข้อผิดพลาดประเภท: สตริงที่คาดหวังหรือวัตถุไบต์
ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ Python คือ:
TypeError : expected string or bytes-like object
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน re.sub() เพื่อแทนที่รูปแบบบางอย่างในออบเจ็กต์ แต่ออบเจ็กต์ที่คุณกำลังใช้งานไม่ใช่สตริงทั้งหมด
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามีรายการค่าต่อไปนี้:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
ตอนนี้ สมมติว่าเราพยายามแทนที่ทุกตัวอักษรที่ไม่ใช่รายการด้วยสตริงว่าง:
import re
#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)
TypeError : expected string or bytes-like object
เราได้รับข้อผิดพลาดเนื่องจากค่าบางค่าในรายการไม่ใช่สตริง
วิธีการแก้ไขข้อผิดพลาด
วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือการแปลงรายการเป็นออบเจ็กต์สตริงโดยล้อมไว้ในตัวดำเนินการ str() :
import re
#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))
#display results
print (x)
A B C D E
โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดเนื่องจากเราใช้ str() เพื่อแปลงรายการเป็นวัตถุสตริงก่อน
ผลลัพธ์ที่ได้คือรายการเดิมโดยแทนที่แต่ละรายการที่ไม่ใช่ตัวอักษรด้วยการเว้นวรรค
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน re.sub() ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้