Here's my preferred approach (which Joe mentioned).
In Python some times it is easier to just let an error happen instead of coding a check for every possible thing that can go wrong (in your case, that the text field has a null value).
I also fixed this so it will only remove the prefix, that is, your prefix must be the first two chars of the text field value.
import arcpy
print("Replace and remove prefix from any and all text fields.")
fcLst = ["C:/Desktop/CCTV.gdb/GravityMain"]
for fc in fcLst:
fieldList = [f.name for f in arcpy.ListFields(fc) if f.type == "String"]
if fieldList:
with arcpy.da.UpdateCursor(fc, fieldList) as cursor:
for row in cursor:
for i in range(len(fieldList)):
try:
if row[i][:2] in ["CL", "ST", "SI","SY"]:
row[i] = row[i][2:]
cursor.updateRow(row)
except:
pass