Python TypeError:应为字符串或字节,如对象Tqdm

Python TypeError:应为字符串或字节,如对象Tqdm,python,python-3.x,Python,Python 3.x,关于这个问题,我在stackoverflow中查阅了几个来源,但无法解决它。 因此,我把它贴在这里,请解决 # Combining all the above statemennts from tqdm import tqdm Other_skill = [] # tqdm is for printing the status bar for sentance in tqdm(project_data['Other skills'].values): sent = decontract

关于这个问题,我在stackoverflow中查阅了几个来源,但无法解决它。 因此,我把它贴在这里,请解决

# Combining all the above statemennts 
from tqdm import tqdm
Other_skill = []
# tqdm is for printing the status bar
for sentance in tqdm(project_data['Other skills'].values):
    sent = decontracted(sentance)
    sent = sent.replace('\\r', ' ')
    sent = sent.replace('\\"', ' ')
    sent = sent.replace('\\n', ' ')
    sent = re.sub('[^A-Za-z0-9]+', ' ', sent)
    sent = ' '.join(e for e in sent.split() if e not in stopwords)
    Other_skill.append(sent.lower().strip())
错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-12-30687b6f17e1> in <module>()
      4 # tqdm is for printing the status bar
      5 for sentance in tqdm(project_data['Other skills'].values):
----> 6     sent = decontracted(sentance)
      7     sent = sent.replace('\\r', ' ')
      8     sent = sent.replace('\\"', ' ')

<ipython-input-7-a344e4b38b78> in decontracted(phrase)
      4 def decontracted(phrase):
      5     # specific
----> 6     phrase = re.sub(r"won't", "will not", phrase)
      7     phrase = re.sub(r"can\'t", "can not", phrase)
      8 

C:\ProgramData\Anaconda3\lib\re.py in sub(pattern, repl, string, count, flags)
    189     a callable, it's passed the match object and must return
    190     a replacement string to be used."""
--> 191     return _compile(pattern, flags).sub(repl, string, count)
    192 
    193 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object
TypeError回溯(最近一次调用)
在()
4#TQM用于打印状态栏
5对于TQM中的语句(项目数据[‘其他技能’]值):
---->6已发送=解除压缩(sentance)
7已发送=已发送。替换('\\r','')
8已发送=已发送。替换('\\','')
在解压(短语)中
4 def解除牵引(短语):
5#具体
---->6短语=re.sub(r“不会”,“不会”,短语)
7短语=re.sub(r“不能”、“不能”短语)
8.
C:\ProgramData\Anaconda3\lib\re.py in sub(模式、复制、字符串、计数、标志)
189一个可调用函数,它传递了match对象并且必须返回
190要使用的替换字符串。”“”
-->191返回编译(模式、标志).sub(repl、字符串、计数)
192
193 def子网(模式、应答、字符串、计数=0、标志=0):
TypeError:应为字符串或类似字节的对象

我认为values()中的括号是必要的。如果我是正确的,project_数据是一个字典,而您错过了值中的括号

from tqdm import tqdm
Other_skill = []
# tqdm is for printing the status bar 
# the values must have round brackets
for sentance in tqdm(project_data['Other skills'].values()):
    sent = decontracted(sentance)
    sent = sent.replace('\\r', ' ')
    sent = sent.replace('\\"', ' ')
    sent = sent.replace('\\n', ' ')
    sent = re.sub('[^A-Za-z0-9]+', ' ', sent)
    sent = ' '.join(e for e in sent.split() if e not in stopwords)
    Other_skill.append(sent.lower().strip())

查看stacktrace,我们可以看到
sub
distracted
中输入错误

最好将断点放在箭头用于检查短语值的位置:

      4 def decontracted(phrase):
      5     # specific
----> 6     phrase = re.sub(r"won't", "will not", phrase)

如果您不知道如何执行此操作,可以添加一些调试代码,如下所示:

  def decontracted(phrase):
      # specific
      print(f'phrase: {phrase}\ttype: {type(phrase)}')
      phrase = re.sub(r"won't", "will not", phrase)
      [...]
这将打印给Destracted的每个短语及其类型。应该只有
字节
str
。如果没有,那么您可以找到您的bug并相应地进行纠正



我希望这有帮助,我们没有足够的信息来帮助您。

什么是
语句类型?它应该是一个字符串或类似object的字节。sentance是字符串格式打印(发送)Arduino C编程C编程Firebase HTML MongoDB节点js Python ReactJS Redux jQuery CSS Django Javascript任何人请帮忙!这很难。我们需要知道什么是
project_data['Other skills']
。它必须有一些不是字符串的东西,但我们无法猜出是什么。--------------------------------------------------------------在()中键入错误回溯(最后一次调用)3 Other_skill=[]4#TQM用于打印状态栏---->5用于TQM(项目数据)中的语句['Other skills'].values():6 sent=decontracted(sentance)7 sent=sent.replace('\\r','')TypeError:'numpy.ndarray'对象不可调用,但获取错误TypeError:'numpy.ndarray'对象不可调用提供项目数据字典项目数据不在字典中,但字符串格式打印(sent)Arduino C编程C编程Firebase HTML MongoDB节点js Python ReactJS Redux jQuery CSS Django JavaScript