Python TypeError:需要类似字节的对象,而不是';str';但是类型是';字节';
所以我试图替换字符串中的一些字符,但python无法正确识别其类型。你知道为什么吗Python TypeError:需要类似字节的对象,而不是';str';但是类型是';字节';,python,python-3.x,typeerror,Python,Python 3.x,Typeerror,所以我试图替换字符串中的一些字符,但python无法正确识别其类型。你知道为什么吗 。。。 打印(键入(word)) word.replace('0','O') ... 该方法在字节对象上使用时,也需要字节对象作为参数 因此,不是: word.replace('0','O')) 写: word.replace(b'0',b'O') 但是,如果您是文本处理,我想知道为什么您使用bytes对象而不是str对象。直接处理字符串更有意义。因此,请确保word的类型是str而不是bytes,然后是w
。。。
打印(键入(word))
word.replace('0','O')
...
该方法在字节
对象上使用时,也需要字节
对象作为参数
因此,不是:
word.replace('0','O'))
写:
word.replace(b'0',b'O')
但是,如果您是文本处理,我想知道为什么您使用bytes
对象而不是str
对象。直接处理字符串更有意义。因此,请确保word
的类型是str
而不是bytes
,然后是word。replace('0','O')
将按预期工作。为此,您的代码只需要两个修改:
- 删除以下语句:
line=line.encode(“ascii”)
- 在
中,只需使用get\u type\u of \u word()
而不是c
chr(c)
还要注意的是,
word.replace('0','O')
没有任何效果,因为它不会真正更改单词,而是返回一个(修改过的)单词副本。因此,您应该指定它具有任何效果,例如,word=word。替换('0','O')
可能str
是'0'
的类型。尝试使用word.replace(b'0',b'O')
。word变量也会像b'foo'b“foo”
是字节对象一样打印出来。
<class 'bytes'>