我有一个解析用户输入的程序。我在unicode字符串(unsupported Unicode escape sequence
)中收到与\ 0000相关的错误,所以我做了一些调查并发现:
A_real_string_\x03\x04\x00\x06\x00\x03\x08\t\x01\x03 \ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd
我想从字符串中删除这样的内容(特别是\x00
)而不删除对国际字符的支持。什么是一个好方法?
编辑:我认为我真正想做的是删除\ x00及其后的所有内容。我怎么能这样做?
答案 0 :(得分:0)
尝试使用非严格错误行为的codecs.decode
,即:
codecs.decode('string', 'utf8', 'ignore')
然而,这会给你一个unicode字符串。要将其转换为先前的字节字符串格式,只需使用已解码字符串的.encode
方法。
答案 1 :(得分:0)
如果要从字符串中删除某些字符,只需迭代字符串并跳过不需要的字符串,然后联接回各个字符。
假设你的unicode字符串被称为ustr
,你可以使用:
u''.join([ c for ustr in a if c not in u'\00'])
(如果您以后想删除其他字符,请说\01
将其添加到部分内容中:...not in u'\00\01')
这适用于Python 2.x和3.x
如果您想在首先\00
之后删除所有内容,只需在原始字符串中find
删除它:
ix = ustr.find(u'\00')
filtered = ustr if ix == -1 else ustr[:ix]