Python TypeError:需要类似字节的对象,而不是';str';但是类型是';字节';

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

所以我试图替换字符串中的一些字符,但python无法正确识别其类型。你知道为什么吗

。。。
打印(键入(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'>