Python从字符串中删除编码字符
我有一个json,例如:Python从字符串中删除编码字符,python,json,Python,Json,我有一个json,例如: item = {"name": '\x84\xa2 Target', ...} 在以以下内容结尾的函数中: return json.dumps(item, ensure_ascii=True) 运行该函数会导致以下错误: UnicodeDecodeError:“utf8”编解码器无法解码位置6中的字节0x84:无效的开始字节 我试过了 return json.dumps(item, ensure_ascii=False).encode('utf-8') 但这也会产
item = {"name": '\x84\xa2 Target', ...}
在以以下内容结尾的函数中:
return json.dumps(item, ensure_ascii=True)
运行该函数会导致以下错误:
UnicodeDecodeError:“utf8”编解码器无法解码位置6中的字节0x84:无效的开始字节
我试过了
return json.dumps(item, ensure_ascii=False).encode('utf-8')
但这也会产生同样的错误
下面的代码确实“有效”,但它给出的json混淆了后面的其他代码(不是我这边):
我想知道如何从任何字符串中删除所有“复杂”字符。这很愚蠢,但似乎可行:
"".join([c for c in json.dumps(item, ensure_ascii=False) if c in string.printable])
从
它回来了
'{"name": " Target"}'
您是否尝试过
json.dumps(item).encode('ascii','ignore')
?这会给出一个:return\u iterencode(o,0)UnicodeDecodeError:'utf8'编解码器无法解码位置6:invalid start byteAs中的字节0x84,因为这里发生了什么:json.dumps(item,确保\u ascii=False)将返回实际字符串而不是对象,但将保留UTF字符。然后,我使用列表理解将字符串视为列表,并根据可打印字符列表检查每个字符,然后使用join将其转换回字符串。
item = {"name": '\x84\xa2 Target'}
'{"name": " Target"}'