วิธีแก้ไข: ข้อผิดพลาดประเภท: สตริงที่คาดหวังหรือวัตถุไบต์


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ 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: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *