用(有意的)困难字符清除字符串

2024-03-29 11:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个分析用户输入的程序。我在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及其后的所有内容。我怎么能这么做?你知道吗


Tags: 字符串用户程序内容string错误unicodereal
2条回答

尝试使用非严格错误行为^{},即:

codecs.decode('string', 'utf8', 'ignore')

但是,这将为您提供一个unicode字符串。要将其转换为以前的字节字符串格式,只需使用解码字符串的.encode方法。你知道吗

如果要从字符串中删除某些字符,只需迭代该字符串并跳过不需要的字符,然后重新连接各个字符。你知道吗

假设您的unicode字符串名为ustr,您可以使用:

u''.join([ c for ustr in a if c not in u'\00'])

(如果以后要删除其他字符,请说\01将它们添加到不在部分:...not in u'\00\01')

这应该对python2.x和3.x都适用


如果要删除第一个\00之后的所有内容,只需在原始字符串中find

ix = ustr.find(u'\00')
filtered = ustr if ix == -1 else ustr[:ix]

相关问题 更多 >