在python字符串中找到\ x

时间:2018-07-05 14:30:29

标签: python unicode

我无法用''

替换python字符串中的\ x
x ='\x01'
re.sub('\x','',x)

给出ValueError:无效的\ x转义。

isinstance(x,unicode) 

给出错误的结果。

def remove_non_ascii_2(text):
    return re.sub(r'[^\x00-\x7F]', '', text)

x = '\x01'
remove_non_ascii_2(x)

不返回“ \ x01”

如何用空字符串替换'\ x'?

1 个答案:

答案 0 :(得分:0)

从注释看来,您遇到的最大问题是数据源不一致。在给定的值列表中,您具有常规的浮点值:nan1.00.0代表浮点数的字符串:"1.0""0.0"和包含以下内容的字符串整数作为二进制值:"\x01"

使用类似以下的方法来对字符串中的浮点数进行排序相对来说并不重要:

if type(item) == float:
    #do stuff

此外,如果您要整理nan值(一种特殊的float类型),可以执行以下操作:

if type(item) == float 
    if item == float('nan'):
        #do other stuff
    else:
        #do stuff

对字符串进行排序有点棘手,因为有很多方法可以使用字符串表示值。如果您的字符串看起来已经像浮点数(rules for looking like a float),那么使用float("1.0")进行常规字符串到float转换就可以了。但是,如果该值由字符串字符的二进制值表示(听起来可能是这种情况),则必须找到一种区分两种类型的字符串的方法。这可能很简单,例如首先尝试调用float(item)并在格式不符合“像浮动”条件时捕获错误。然后假设您只有一个字符,则可以使用ord(item)返回该字符的二进制表示形式。这可能看起来像这样:

try:
    converted = float(item)
catch ValueError:
    if len(item) == 1:
        converted = ord(item)
    else:
        #determine how to handle multi character values